代码之家  ›  专栏  ›  技术社区  ›  Wout

仅使用.NET regex在文本中保留合法字符

  •  1
  • Wout  · 技术社区  · 14 年前

    我有一个合法字符列表,我想从文本中删除所有其他字符。

    // my legal chars. a-Z, numbers, space, _, - and percentage
    string legalChars = "[\p{L}\p{Nd}_\- %]*"
    
    string text = "[update], Text with {illegal} chars such as: !? {}";
    

    我确实找到了很多清除非法字符的例子。我想做相反的事情。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jon Skeet    14 年前

    怎么样:

    String trimmed = Regex.Replace(input, @"[^\p{L}\p{Nd}_\- %]", "");
    

    或:

    private static readonly Regex RemovalPattern 
       = new Regex(@"[^\p{L}\p{Nd}_\- %]");
    
    ...
    
    
    string trimmed = RemovalPattern.Replace(input, "");
    

    请注意,您的regex当前包含合法字符 与注释相反,包含空格。

        2
  •  0
  •   RvdK    14 年前

    为什么不循环遍历字符串yourselfa并检查每个字符(如果它是合法字符),将该字符附加到新字符串(例如使用StringBuilder)