【问题标题】:How to replace all special character into a string using C# [closed]如何使用 C# 将所有特殊字符替换为字符串 [关闭]
【发布时间】:2014-01-27 17:55:01
【问题描述】:

我想用comma (,) 替换字符串中的所有特殊字符。

例如:

Hello@Hello&Hello(Hello)

输出 -

Hello,Hello,Hello,Hello,

(我不知道如何在 C# 中使用正则表达式)

我可以在 C# 中使用正则表达式来完成这项工作吗?

【问题讨论】:

  • 定义“特殊字符”。
  • 您要替换的特殊字符集是什么?
  • 用任何你认为特别的东西来上课。一对一 - 查找 [special chars] 替换 , 多对一 - 查找 [special chars]+ 替换 ,
  • 现在是谷歌Regular Expressions 或 Visual Studio 帮助应用程序库的好日子。 Microsoft 对其所有语言都使用相同的正则表达式引擎(JS 除外,这是一种可憎的东西)。

标签: c# regex


【解决方案1】:

是的,您可以在 C# 中使用 regular expressions

Using regular expressions with C#:

using System.Text.RegularExpressions;

string your_String = "Hello@Hello&Hello(Hello)";
string my_String =  Regex.Replace(your_String, @"[^0-9a-zA-Z]+", ",");

【讨论】:

  • Convert.ToString(your_String) 嗯?
  • @tnw 同意,为什么在value不为null的时候调用Convert.ToString(your_string)可以直接调用your_string.ToString()
  • 错了。例如尝试输入“Hello&Привет&Hi”
【解决方案2】:

假设您要替换不是数字或字母的符号(以及 @Guffa 正确指出的 _ 字符):

string input = "Hello@Hello&Hello(Hello)";
string result = Regex.Replace(input, @"[^\w\d]", ",");
// Hello,Hello,Hello,Hello,

您可以添加其他不应替换的符号。例如。如果您希望保留空白符号,只需将\s 添加到模式中:\[^\w\d\s]

【讨论】:

  • \w 不仅匹配字母,还匹配_
  • @Guffa 谢谢,请注意。如果 _ 被认为是特殊字符,那么a-zA-Z 更合适
【解决方案3】:

您可以使用正则表达式来例如用逗号替换所有非字母数字字符:

s = Regex.Replace(s, "[^0-9A-Za-z]+", ",");

注意:设置后的+ 将使其用逗号替换每组非字母数字字符。如果您想用逗号替换每个字符,只需删除 +

【讨论】:

  • 为什么投反对票?如果你不解释你认为错的地方是什么,就无法改进答案。
  • 我不明白为什么答案被否决,因为另一个被赞成的(也是被接受的)答案也说了同样的话。但我只能投票一次。
  • 如果我想允许连字符怎么办?这个工作 s = Regex.Replace(s, "[^0-9A-Za-z-]+", ",");
【解决方案4】:

另外,也可以通过LINQ完成

var str = "Hello@Hello&Hello(Hello)";
var characters = str.Select(c => char.IsLetter(c) ? c : ',')).ToArray();             
var output = new string(characters);
Console.WriteLine(output);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多