用Regular Expression快速完成国际化替换

前言

如果一开始写项目很潦草, 没做好国际化的准备, 产品经理那边突然喊一嗓子: 那谁, 加个国际化, 不难吧,明天完成给我看一下.
在这里插入图片描述

嘴上: 是是是! 好的! 没问题!
心里: 滚!

其实国际化主要就烦, 寻找项目中的中文做替换. 不过其实可以通过Regular Expression(正则表达式)搜索, 来解决这个烦恼.

Regular Expression

打开一个项目,点击左上角搜索标识, 就会出现当前这个页面
在这里插入图片描述

点击Text, 会出现两个选项 (想了解整个版面, 可以自行搜索一下, 这里只是重点介绍如何快速替换中文)

  1. Text
  2. Regular Expression(正则表达式搜索)

选择Regular Expression. 好, 接下来,开始如何替换中文吧.

最终4条正则表达式

先列出我们总结出的4条正则表达式吧.

1. 搜索只有中文字符串

(@"[\u4e00-\u9fa5]{1,}")

2. 搜索除去特定头部, 只有中文字符串

([^i_log(])(@"[\u4e00-\u9fa5]{1,}")

其中 i_log( 可替换为你任意头部

3. 搜索含有中文字符串

(@"((?!").)*?[\u4e00-\u9fa5].*?")

4. 搜索除去特定头部, 含有中文字符串

([^i_log(])(@"((?!").)*?[\u4e00-\u9fa5].*?")

其中 i_log( 可替换为你任意头部

使用示例

例如你有一个国际化的宏

#define XQ_Localized(key) NSLocalizedStringFromTable(key, @"国际化文件名称", @"描述")

替换纯中文字符串

项目没用过国际化宏

如下图, 搜索, 并替换.
输入搜索中文字符串之后, 就会查找到 @“哈哈” , 然后直接点击Replace All, 就能一键替换了
注意,一键替换还是少点用, 不然替换了一些莫名奇妙的代码, 就要被挨领导叼了. /(ㄒoㄒ)/~~

(@"[\u4e00-\u9fa5]{1,}")
替换框中的 $1 是查找到的值

在这里插入图片描述

项目已用国际化宏

就是如果项目已替换了一部分, 后面需要查找没替换的, 直接用上面那个, 肯定不行, 这个就需要用过滤头部了.

([^i_log(])(@"[\u4e00-\u9fa5]{1,}")
$1 是第一个 () 查找出来的头部
$2 是第二个 () 查找出来的内容

(asd

替换含有中文的字符串

上面两个只是会查找所有都是中文的字符串,我们也需要找出一些包含中文的字符串, 不过这个一般就不太能直接替换, 需要单独自己提取出来中文替换.
寻找不包括头部的,就直接取第四条正则放上去就行了
在这里插入图片描述

以上的正则表达式都是根据自己需要总结出来的, 你有自己的需求可以Google or 百度一下正则表达式, 内容不是很多, 抽个空闲时间看一遍就可以了.

ps: 这里说一下, 个人觉得xib不要用生成的.strings做国际化, 封装成库的时候, 总有一些坑.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值