我正在开发一个C#程序,需要加载一些javascript代码,解析它并对代码中的字符串文字进行一些处理(比如用其他东西覆盖它们).
我的问题是,我很难设计一种优雅的方法来首先在javascript代码中找到字符串文字.
例如,看看下面的示例javascript代码.你是否看到Stack Overflow的代码highliter甚至能够在代码中挑选出字符串文字,并使它们变成红色?
我想基本上做同样的事情,除了我不会将它们变成不同的颜色,但我会对它们进行一些处理,并可能用完全不同的字符串文字替换它.
var dp = { sh : // dp.sh { Utils : {}, // dp.sh.Utils Brushes : {}, // dp.sh.Brushes Strings : {}, Version : '1.3.0' } }; dp.sh.Strings = { AboutDialog : 'About...
dp.SyntaxHighlighter Version: {V}©2004-2005 Alex Gorbatchev. All right reserved. |
我尝试通过查找引号进行解析,但是当字符串文字中包含转义字符时,它会变得复杂.我想的另一个解决方案是使用RegEx,但我对正则表达式不够强大,我甚至不确定这是否是我应该阅读的途径.
我想看看Stack Oveflow的想法.谢谢你!
深度正则表达式:高级引号字符串匹配有一些很好的例子,说明如何使用正则表达式执行此操作.
其中一种方法是:
(["'])(?:(?!\1)[^\\]|\\.)*\1
您可以按如下方式使用它:
string modifiedJavascriptText = Regex.Replace ( javascriptText, @"([""'])(?:(?!\1)[^\\]|\\.)*\1", // Note the escaped quote new MatchEvaluator ( delegate(Match m) { return m.Value.ToUpper(); } ) );
在这种情况下,所有字符串文字都是大写的.