-1

我正在对 Android 应用程序执行本地化。此过程中的痛点之一是区分用于向用户显示的字符串文字和在本地/以编程方式使用的字符串文字之间的区别。

public static String PERSON = "Person";
intent.putExtra("isPerson", isPerson);
myTextView.setText("My name is Mark");

什么是正则表达式,我可以使用它给我的代码行,其中文本用引号引起来,但 1)不是变量声明和 2)不像第二行那样用作字符串键/值映射中的键。理想的目标是让表达式的匹配结果为第 3 行的类型。我可以查找包含 setText 的字符串,但随后会丢失如下硬编码的字符串:

String firstName = "Mark";
myTextView.setText(firstName);

我已经设法得到所有非空的被引号包围的字符串:

\"\w{1,}"

问题是它太宽泛了,给了我一切。此外,我希望以下内容能够返回所有不包含 putExtra 的字符串:

(?<!putExtra).\"\w{1,}"   

但这也不能很好地工作,因为它返回的结果如下:

intent.putExtra("title", "Welcome");

当我想排除任何包含 putExtra 子字符串的文本行时,“欢迎”使它显示为匹配项。

您的 RegEx 大师的任何帮助将不胜感激。我目前正在使用启用正则表达式的 Eclipse 文件搜索功能

4

1 回答 1

0

您正在尝试解决错误的问题。你的线路

intent.putExtra("title", "Welcome");

不应该有一个文字字符串“标题”,而是一个命名常量。因为您肯定至少使用了两次“标题”字符串(在创建额外信息时,以及在活动 onCreate 方法中提取它时),所以根据干净代码规则,它应该是一个命名常量,以避免幻数和字符串。

按照这种方法,基本上不需要识别正则表达式中的键/值设置器。

于 2012-12-25T07:05:51.577 回答