替换字符串中的数字 - C#

时间:2016-04-01 16:45:40

标签: c#

我有一个字符串(仅限数字),我想用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"

5 个答案:

答案 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);