C# - 需要以一个且只有一个逗号分隔的字符格式的字符串

Roh*_*han 3 c# regex string replace character

我的目标是获得字符串的格式:由分离的"0,1,2,3,4,7,10"的数字一个逗号,在开始或结束没有逗号.

如果我有字符串"0,1,2,4"我只想删除出现的两个逗号中的一个,这样我将留下"0,1,2,4"

我试过了 .Replace(",,", ",")

但问题是,我不知道可能有多少逗号.所以例如,我可能会遇到像"0 ,,,,,,, 1,2,3 ,,,, 5"这样的情况,我需要把它变成"0,1,2,3,5"

如何使用C#(.net webforms)实现此目的?也许与正则表达式有关?但我对这些并不太熟悉.这是唯一的方法吗?

Eri*_* J. 10

您可以在逗号上拆分字符串,删除空元素,然后将元素重新连接在一起.

string str = "0,,,,,,,1,,2,3,,,,5";
var singleComma = string.Join(",", 
    str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
Run Code Online (Sandbox Code Playgroud)

虽然这不使用RegEx,但它可能会稍快一些,因为它使用专门为此目的而设计的操作,而不是一般的模式匹配.然后,除非你有一个非常大的字符串或许多字符串,否则任何性能提升都无关紧要.


Ste*_*eve 8

这很简单

string test = "0,,,,,,,1,,2,3,,,,5";
string result = Regex.Replace(test, ",+", ", ");
Run Code Online (Sandbox Code Playgroud)

模式表达式中逗号后面的加号表示

匹配前一个元素一次或多次.

关于Regex表达式的MSDN快速参考


Ese*_*ser 6

而不是删除不需要的字符,而是使用原始字符串中的数字形成一个新的干净字符串.您可以使用正则表达式

string input = "0,,,  .+=/ garbage,,,,1,,2,3,,,,5";
string output = String.Join(", ", Regex.Matches(input, @"\d+")
                                       .Cast<Match>()
                                       .Select(m => m.Value));
Run Code Online (Sandbox Code Playgroud)