2

私は正規表現を置き換えると思っていました

Regex r = new Regex("[0-9]"); 
return r.Replace(sz, "#");

aa514a3a.4s5 という名前のファイル。期待どおりに動作します。ext の数字を含むすべての数字を置き換えます。内線番号を置き換えないようにするにはどうすればよいですか。多数の正規表現文字列を試しましたが、すべてかゼロかのパターンだと思い始めているので、これを行うことはできませんか? 文字列から ext を分離する必要がありますか、それとも正規表現を使用できますか?

4

4 に答える 4

2

単一の正規表現でそれを行うことはできないと思います。

おそらく、元の文字列をベースとエクステンションに分割するのが最善です。ベースで交換を行います。その後、それらを元に戻します。

于 2009-04-03T10:51:13.070 に答える
1

はい、拡張子を分けたほうがいいと思います。

文字列の末尾に常に 3 文字の拡張子があることが確実な場合、最も簡単で、最も読みやすく、保守しやすい解決策は、置換のみを実行することです。

yourString.Substring(0,YourString.Length-4)

..そして追加

yourString.Substring(YourString.Length-4, 4)
于 2009-04-03T10:50:36.440 に答える
1

部分文字列で正規表現を実行しないのはなぜですか?

String filename = "aa514a3a.4s5";
String nameonly = filename.Substring(0,filename.Length-4);
于 2009-04-03T10:53:44.327 に答える