如何从字符串中删除除破折号以外的所有非字母数字字符?

  • 回答 (2)
  • 关注 (0)
  • 查看 (89)

除了短划线和空格字符以外,如何从字符串中删除所有非字母数字字符?

efsdfarrefsdfarr提问于
秋之夕颜清念念不忘,必有回响回答于

我可以使用正则表达式,他们可以提供优雅的解决方案,但他们可以导致性能问题。这是一个解决方案

char[] arr = str.ToCharArray();
arr = Array.FindAll<char>(arr, (c => (char.IsLetterOrDigit(c) 
                                  || char.IsWhiteSpace(c) 
                                  || c == '-')));
str = new string(arr);

当使用紧凑框架(它没有FindAll)

将FindAll替换为1

char[] arr = str.Where(c => (char.IsLetterOrDigit(c) || 
                             char.IsWhiteSpace(c) || 
                             c == '-')).ToArray(); 
str = new string(arr);
心愿回答于

用[^a-zA-Z0-9 -]空字符串替换。

Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答
  • 富有想象力的人

    2 粉丝0 提问1 回答

扫码关注云+社区

领取腾讯云代金券