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

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 に答える
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 に答える
-1

これを試して:

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

s 文字列には、必要な値が含まれます。

于 2013-01-31T16:30:44.637 に答える