我的目标是获得格式为:" 0,1,2,3,4,7,10和#34; 数字由一个逗号分隔,开头或结尾没有逗号。
如果我有字符串" 0,1,2,4和34; 我想删除两个逗号中的一个,这样我将留下" 0,1,2,4和#34;
我试过了.Replace(",,", ",")
然而,问题是我不知道可能有多少逗号。因此,例如,我可能会遇到类似" 0 ,,,,,,, 1,2,3 ,,,, 5"我需要把它变成" 0,1,2,3,5"
如何使用C#(.net webforms)实现此目的? 也许与正则表达式有关?但我对这些并不太熟悉。这是唯一的方法吗?
答案 0 :(得分:10)
您可以在逗号上拆分字符串,删除空元素,然后将元素重新连接在一起。
string str = "0,,,,,,,1,,2,3,,,,5";
var singleComma = string.Join(",",
str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
虽然这不使用RegEx,但它可能会稍快一些,因为它使用专门为此目的而设计的操作,而不是一般的模式匹配。然后,除非你有一个非常大的字符串或许多字符串,否则任何性能提升都无关紧要。
答案 1 :(得分:8)
只是
string test = "0,,,,,,,1,,2,3,,,,5";
string result = Regex.Replace(test, ",+", ", ");
模式表达式中逗号后面的加号表示
匹配前一个元素一次或多次。
答案 2 :(得分:6)
不是删除不需要的字符,而是使用原始字符串中的数字形成一个新的干净字符串。您可以使用正则表达式
string input = "0,,, .+=/ garbage,,,,1,,2,3,,,,5";
string output = String.Join(", ", Regex.Matches(input, @"\d+")
.Cast<Match>()
.Select(m => m.Value));
答案 3 :(得分:4)
您可以将string.Split
与StringSplitOptions.RemoveEmptyEntries
和string.Join
:
string input = "0,,,,,,,1,,2,3,,,,5";
string[] split = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
string result = string.Join(",", split);
答案 4 :(得分:0)
这是使用正则表达式的另一种方法。
您正在寻找正则表达式模式 File "E:\password.py", line 98, in program_start
find_account()
File "E:\password.py", line 36, in find_account
if search in f:
File "C:\Python24\lib\shelve.py", line 107, in __contains__
return self.dict.has_key(key)
AttributeError: 'int' object has no attribute 'has_key'
,其中:
\d,?
将匹配任何数字,
和\d
将匹配char ,?
零次或一次。
<强> Realtime regex here! 强>
您的代码段如下所示:
,