我有一个字符串(仅限数字),我想用string.Empty
替换特定的数字。我正在使用string.Replace
,但问题是它取代了所有数字中的给定数字。我也尝试了Regex.Replace
,但得到的结果相同。
例如,
代码:
string original = "301, 3301, 2301, 5301, 8301";
string modified = original.Replace("301", string.Empty);
string usingRegex = Regex.Replace(original, "301", string.Empty);
实际结果:
", 3, 2, 5, 8"
预期结果:
"3301, 2301, 5301, 8301"
答案 0 :(得分:1)
const string original = "301, 3301, 2301, 5301, 8301, 301";
var lst = original.Split (',').Select(s => s.Trim()).Where(item => item != "301");
var replaced = string.Join(", ", lst);
这会拆分字符串,并仅删除那些正好为301的条目,并加入备份结果。这大致是tokenization的过程。
答案 1 :(得分:1)
尝试:
string usingRegex = Regex.Replace(original, "(^301 ,|, 301)", string.Empty);
这与以,
结尾或以,
结尾的301匹配。
答案 2 :(得分:0)
在你的正则表达式中尝试使用\ b 像这样的东西:
string original = "301, 3301, 2301, 5301, 8301";
string modified = original.Replace("301", string.Empty);
string usingRegex = Regex.Replace(original, @"\b301\b", string.Empty);
让我知道这是否有用。
答案 3 :(得分:0)
你可以这样试试,
<cstdio>
答案 4 :(得分:0)
不是很好,但与Regex一起工作。 删除(!)给定字符串中的任何数字。
string original = "301, 3301, 2301, 5301, 8301";
string usingRegex = Regex.Replace(original, "(, 5301)*(^5301, )*", "");
Console.WriteLine(original);
Console.WriteLine(usingRegex);