2011-06-30 46 views
2

我试图从JavaScript文件中删除一些不需要的空白,并在将它们发送到客户端之前使用C#和正则表达式组合文件。我有一个JavascriptHandler来处理.js文件,它工作正常。这是我用来“打包”JavaScript的函数。正则表达式删除某些字符周围的不需要的空间

private string PackJs(string file) 
{ 
    string text = System.IO.File.ReadAllText(JSFolder + file); 

    //replace any combination of unwanted whitespace with a single space 
    text = Regex.Replace(text, @"[\r\n\s]+", " "); 

    //Can I get this to match +, =, -, etc? 
    text = Regex.Replace(text, @"([=])", "="); 

    //more regular expressions here, when I get round to it 

    return text; 
} 

我的第二个表达式当前将用“=”替换“=”。我想指定更多的字符和关键字,可以从两侧删除空格。

如何在正则表达式中搜索此内容,然后在替换中反向引用该字符或关键字?

感谢,

+0

你确定要用普通空格替换'\ r +'或'\ n +'吗?我相当肯定,这可能会改变JavaScript的语义(即使它不会破坏语法)。 – LukeH

+0

是否js“知道结构良好?”a = 1 \ r \ nb = 4' & 'a=1; b = 4'确实a = 1 b = 4'不是 –

+0

是的, JS。无论如何,我可以编辑JS,我只是试图让它更易于阅读,并在发送给客户端时将其打包好。 – Connell

回答

3

里面[]把你的角色

var input = "c = a + b"; 
var result = Regex.Replace(input, @"\s([=+])\s", "$1"); 

结果将是:c=a+b

+0

我知道这将是一些东西。我对$ 1的理解是错误的。我以为你必须指定哪个语句是你的正则表达式字符串中$ 1的返回值。现在工作。基本上......我的'()'背包在错误的地方。 – Connell

+1

您应该使用'\ s *'而不是'\ s' –

0
text = Regex.Replace(text, @(" (=|\+|-) ", "$1"); 
1

删除空格周围的一些字符,如[=*/+-]使用这个表达式:

text = Regex.Replace(text, @"\s*([=*/+-])\s*", "$1"); 

[]之间的-字符必须是第一或最后,以避免它的意义字符范围

test code example

相关问题