搜索字符串字面值

19
在本地化的过程中,我需要找到散布在我们源代码中的所有字符串字面量。我正在寻找一种方法将其脚本化为修改后的源代码库检查(例如,在某人检查完某个东西后,设置一个框来检查这个状态)。我可能会使用NAnt和CruiseControl之类的工具来处理CVS的管理(在我的情况下是StarTeam :( ),但您是否知道有任何可脚本化(或命令行)的实用程序,可以准确地循环遍历源代码以查找字符串文字? 我意识到我可以根据正则表达式进行简单的字符串查找,但希望能够更好地利用它(也许分析字符串或将其放入类别中),因为很多时候字符串可能并不需要翻译。 有什么想法吗?
6个回答

40

Visual Studio 2010及更早版本:

  1. 查找文件(CTRL+SHIFT+F)
  2. 使用:正则表达式
  3. 查找::q (带引号的字符串)
  4. 查找全部

查找结果窗口将包含所有文件的报告,包括行号、该行以及带引号的字符串自身。

对于Visual Studio 2012及更高版本,请搜索((\".+?\")|('.+?'))参考链接,感谢@CincauHangus)。


4
对于较新版本的Visual Studio,您应该使用以下代码: ((".+?")|('.+?')) 参考资料:http://msdn.microsoft.com/en-us/library/vstudio/2k3te2cs(v=vs.110).aspx - CincauHangus
1
为了得到更精确的结果,请使用以下正则表达式:(?<!(<.|Resource.|^.[.))(".+?")。这将排除资源文件和装饰。 - Jeff
Jeff的“(?<!(<.|Resource.|^.[.))(".+?")对我没用。似乎导致搜索卡住了。 - undefined

2
  1. 查找文件 (CTRL+SHIFT+F)
  2. 查找选项 -> 选择 使用正则表达式

针对特定文本:

  1. 查找内容: "+.*(MYSPECIFICTEXT)+.*"+

针对所有文本:

  1. 查找内容: "+.*"+

然后

  1. 查找全部

2
它使用已编译的二进制文件而非源代码,但Sysinternals的Strings应用程序可能会有用。

1

在搜索时,要查找所有Text="textonly"实例,请使用以下正则表达式:

(Text=)(")([a-z])

这是有关查找 Text="*" 的帮助,但排除已转换为使用资源文件的文本:

Text="<%$ Resources:LocalizedText, KeyNameFromResourceFile%>"

此外,(>)([a-z]) 可以用于查找标签之间的文字字面量,如下所示:

<h1>HeaderText</h1>

0

在 CodePlex 上有一个 C# 解析器,你可能可以使用它。


0

嗨,这是我用来查找翻译文本的正则表达式,它包括空格和不同类型的引号。

正则表达式:

([",`,'])([\w,\s]*)([",`,'])

搜索字符串:var test='这是一个测试';


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接