C# 如何标记/解析javascript源代码中的字符串文字
我正在用C语言编写一个程序,该程序需要加载一些JavaScript代码,对其进行解析,并对代码中的字符串文本进行处理(例如用其他内容覆盖它们) 我的问题是,首先,我很难设计一种优雅的方法来实际查找JavaScript代码中的字符串文字 例如,看看下面的示例JavaScript代码。你看到Stack Overflow的代码高亮器是如何在代码中识别出字符串文字并使它们变成红色的了吗 我想基本上做同样的事情,只是我不会将它们转换成不同的颜色,但我会对它们进行一些处理,并可能用一个完全不同的字符串文字替换它C# 如何标记/解析javascript源代码中的字符串文字,c#,javascript,parsing,C#,Javascript,Parsing,我正在用C语言编写一个程序,该程序需要加载一些JavaScript代码,对其进行解析,并对代码中的字符串文本进行处理(例如用其他内容覆盖它们) 我的问题是,首先,我很难设计一种优雅的方法来实际查找JavaScript代码中的字符串文字 例如,看看下面的示例JavaScript代码。你看到Stack Overflow的代码高亮器是如何在代码中识别出字符串文字并使它们变成红色的了吗 我想基本上做同样的事情,只是我不会将它们转换成不同的颜色,但我会对它们进行一些处理,并可能用一个完全不同的字符串文字替
var dp = {
sh : // dp.sh
{
Utils : {}, // dp.sh.Utils
Brushes : {}, // dp.sh.Brushes
Strings : {},
Version : '1.3.0'
}
};
dp.sh.Strings = {
AboutDialog : '<html><head><title>About...</title></head><body class="dp-about"><table cellspacing="0"><tr><td class="copy"><p class="title">dp.SyntaxHighlighter</div><div class="para">Version: {V}</p><p><a href="http://www.dreamprojections.com/syntaxhighlighter/?ref=about" target="_blank">http://www.dreamprojections.com/SyntaxHighlighter</a></p>©2004-2005 Alex Gorbatchev. All right reserved.</td></tr><tr><td class="footer"><input type="button" class="close" value="OK" onClick="window.close()"/></td></tr></table></body></html>',
// tools
ExpandCode : '+ expand code',
ViewPlain : 'view plain',
Print : 'print',
CopyToClipboard : 'copy to clipboard',
About : '?',
CopiedToClipboard : 'The code is in your clipboard now.'
};
dp.test1 = 'some test blah blah blah' + someFunction() + 'asdfasdfsdf';
dp.test2 = 'some test blah blah blah' + 'xxxxx' + 'asdfasdfsdf';
dp.test3 = 'some test blah blah blah' + "XXXXsdf "" \" \' ' sdfdff "" \" \' ' asdfASDaSD FASDF SDF' + 'asdfasdfsdf";
dp.SyntaxHighlighter = dp.sh;
var-dp={
sh://dp.sh
{
Utils:{},//dp.sh.Utils
画笔:{},//dp.sh.brush
字符串:{},
版本:“1.3.0”
}
};
dp.sh.Strings={
AboutDialog:'About…dp.syntaxHighlightServer版本:{V}
我尝试过通过查找引号进行解析,但当字符串文本中有转义字符时,解析会变得复杂。我想的另一个解决方案是使用正则表达式,但我对正则表达式的能力还不够强,我甚至不确定这是否是我应该仔细研究的途径
我想看看堆栈溢出是怎么想的。非常感谢 有一些很好的例子说明了如何使用正则表达式来实现这一点
其中一种方法是:
(["'])(?:(?!\1)[^\\]|\\.)*\1
在本例中,所有字符串文字都是大写的
string modifiedJavascriptText =
Regex.Replace
(
javascriptText,
@"([""'])(?:(?!\1)[^\\]|\\.)*\1", // Note the escaped quote
new MatchEvaluator
(
delegate(Match m)
{
return m.Value.ToUpper();
}
)
);