1

给定以下字符串:

string s = "I need drop the 1 from the end of AAAAAAAA1 and BBBBBBBB1"

如何从任何以 1 结尾的 8 个字符串中修剪“1”?我到目前为止找到了一个可以找到这些字符串的有效正则表达式模式,我猜我可以使用 TrimEnd 删除“1”,但是我该如何修改字符串本身呢?

Regex regex = new Regex("\\w{8}1");

foreach (Match match in regex.Matches(s))
{
    MessageBox.Show(match.Value.TrimEnd('1'));
}

我正在寻找的结果是“我需要从 AAAAAAAA 和 BBBBBBBB 末尾删除 1”

4

4 回答 4

4

Regex.Replace是工作的工具:

var regex = new Regex("\\b(\\w{8})1\\b");
regex.replace(s, "$1");

我稍微修改了正则表达式,以更紧密地匹配您尝试做的事情的描述。

于 2013-01-31T16:18:45.133 回答
0

这是一种非正则表达式方法:

s = string.Join(" ", s.Split().Select(w => w.Length == 9 && w.EndsWith("1") ? w.Substring(0, 8) : w));
于 2013-01-31T16:22:17.013 回答
0

在带有 LINQ 的 VB 中:

Dim l = 8
Dim s = "I need drop the 1 from the end of AAAAAAAA1 and BBBBBBBB1"
Dim d = s.Split(" ").Aggregate(Function(p1, p2) p1 & " " & If(p2.Length = l + 1 And p2.EndsWith("1"), p2.Substring(0, p2.Length - 1), p2))
于 2013-01-31T16:34:54.400 回答
-1

试试这个:

s = s.Replace(match.Value, match.Value.TrimEnd('1'));

并且 s 字符串将具有您想要的值。

于 2013-01-31T16:30:44.637 回答