在寻求本地化的过程中,我需要找到散布在源代码中的所有字符串文字。我正在寻找一种方法将其编写为修改后源存储库检查的脚本。 (即,在有人检查了一些内容后,有一个框设置来检查此统计数据)我可能会使用 NAnt 和 CruiseControl 或其他东西来处理 CVS 的管理(在我的例子中是 StarTeam :( )但是你知道任何可编写脚本的东西吗? (或命令行)实用程序可以准确地循环源代码查找字符串文字?我意识到我可以根据正则表达式进行简单的字符串查找,但想要更划算。(也许分析字符串或将其分类)因为很多时候字符串不一定需要翻译。有什么想法吗?
Visual Studio 2010 及更早版本:
:q
(带引号的字符串)“查找结果”窗口现在将包含所有文件的报告,其中包含行号以及带引号字符串的行本身。
对于 Visual Studio 2012 及更高版本,搜索
((\".+?\")|('.+?'))
(参考,向 @CincauHangus 致敬)
它使用编译后的二进制文件而不是源代码,但 Sysinternals 的 Strings 应用程序可能很有用。
Use Regular Expressions
对于文字中的特定文本:
"+.*(MYSPECIFICTEXT)+.*"+
对于所有文字
"+.*"+
然后
要查找所有
Text="textonly"
实例,请在搜索时使用以下正则表达式:
(Text=)(")([a-z])
这有助于查找
Text="*"
,但排除已转换为使用资源文件的文本:
Text="<%$ Resources:LocalizedText, KeyNameFromResourceFile%>"
此外,
(>)([a-z])
还可用于查找标签之间的文字,如下所示:
<h1>HeaderText</h1>
CodePlex 上有一个 C# 解析器,您或许可以使用。
嗨,这是用于搜索文字的正则表达式,我用它来查找要翻译的文本。 它还包括空格和不同的引号
正则表达式:
([",`,'])([\w,\s]*)([",`,'])
searchstring: var test='这是一个测试';
补充答案。要排除注释掉的行和摘要行,请使用以下命令: ^(?!\s{0,}[/]{2,}).+((".+?")|('.+?'))