当前位置:  开发笔记 > 编程语言 > 正文

如何从javascript源代码中标记/解析字符串文字

如何解决《如何从javascript源代码中标记/解析字符串文字》经验,为你挑选了1个好方法。

我正在开发一个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}

http://www.dreamprojections.com/SyntaxHighlighter

©2004-2005 Alex Gorbatchev. All right reserved.
', // 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;

我尝试通过查找引号进行解析,但是当字符串文字中包含转义字符时,它会变得复杂.我想的另一个解决方案是使用RegEx,但我对正则表达式不够强大,我甚至不确定这是否是我应该阅读的途径.

我想看看Stack Oveflow的想法.谢谢你!



1> Daniel LeChe..:

深度正则表达式:高级引号字符串匹配有一些很好的例子,说明如何使用正则表达式执行此操作.

其中一种方法是:

(["'])(?:(?!\1)[^\\]|\\.)*\1

您可以按如下方式使用它:

string modifiedJavascriptText =
   Regex.Replace
   (
      javascriptText, 
      @"([""'])(?:(?!\1)[^\\]|\\.)*\1", // Note the escaped quote
      new MatchEvaluator
      (
         delegate(Match m) 
         { 
            return m.Value.ToUpper(); 
         }
      )
   );

在这种情况下,所有字符串文字都是大写的.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有