2011-05-05 80 views
0

更新:禁止特殊字符

我刚刚意识到,怎么样不允许任何特殊字符,而不是写每一个特殊字符?

这里是我正在做的一个例子:http://cnn.com/news/latest.html&id=1 so剥离只有当&是在开始或结束。

下面的代码去掉这些(+,(,),;,")特殊字符,它工作正常

static String StripSpcialChar(String param) 
     { 
      String result = null; 
      if (param != null) 
      {     
       Regex re = new Regex("\\&|\\(|\\)|\\<|\\>|\\\"|\\;|\n|\r|\\`"); 
       result = re.Replace(param, ""); 
       result = result.Trim(); 
      } 
      return result; 
     } 

,但我的问题是,我怎么能剥夺&只有当他们有它在开始或结束?

+0

比赛是'((?<= ^))'或'((?= $))'将是我的猜测。 - **编辑**另外,您可以在字符串上使用'@'前缀(字面量)并使您的图案更清晰易读。 – 2011-05-05 15:02:25

+0

你允许什么? – 2011-05-05 15:03:00

+0

或者你可以使用.EndsWith和.StartsWith方法来检查,然后删除最后和第一个字符 – 2011-05-05 15:03:19

回答

0

测试和工作。使用这个表达式:

Regex re = new Regex("\\(|\\)|\\<|\\>|\\\"|\\;|\n|\r|\\`|^&|&$"); 

用法:

Console.WriteLine(StripSpcialChar("ali&")); // prints ali 
Console.WriteLine(StripSpcialChar("&ali")); // prints ali 
Console.WriteLine(StripSpcialChar("a&li")); // prints a&li 

注:

如果您需要在开始或年底剥离,试试这个:

Regex re = new Regex("\\(|\\)|\\<|\\>|\\\"|\\;|\n|\r|\\`|\b&|&\b"); 
+0

我刚刚意识到,如何不允许任何特殊字符,而不是写每一个特殊的字符? – 2011-05-05 18:18:33

1
"&this is a test&&&".Trim('&'); 
+0

+1,简单而优雅。我喜欢。 – 2011-05-05 15:03:09

+0

这里是我在做什么的例子:'http:// cnn.com/news/latest.html&id = 1'因此只有在&开始或结束时才剥离。 – 2011-05-05 15:05:34

+0

@AbuHamzah:现在,鉴于我们在这里说的是网址,这个最终目标是什么? (为什么你会划掉特殊字符?我几乎可以肯定有更好的方法可用。) – 2011-05-05 15:06:29

0

这个怎么样:

string newString = string.Trim(oldString, '&'); 
0

正则表达式使用^意味着和$“字符串的开始”为“字符串的结束”:
"^&|&$"
应该匹配字符串开始,用或结束,在符号(& )

1

尝试

Regex re = new Regex("(^&)|(&$)|\\(|\\)|\\<|\\>|\\\"|\\;|\n|\r|\\`"); 
+0

它看起来像这个人做他想做的事情,它是在开头或结尾或字符串的条形&符号,以及剥离 – rusty 2011-05-05 15:24:32

+0

的特殊字符我刚才意识到,如何不允许任何特殊字符而不是写每一个特殊字符字符? – 2011-05-05 18:17:15