10

次のような文字列があります。

var abc = "00345667";
var def = "002776766";

最初の 2 文字は常に " 00" です。これらを " " に変更するにはどうすればよい01ですか?

4

8 に答える 8

16

Substring( )を使用できます。

var res = "01" + abc.Substring(2);

編集より多くの置換を行う場合のパフォーマンスに関する考慮事項。

置換するサブ文字列がさらにある場合は、StringBuilder を使用できます。この記事をお読みください。 Visual C# で文字列連結のパフォーマンスを向上させる方法

文字列連結 VS 文字列ビルダー

Visual C/C++ で strcat() よりも文字列連結を改善する 1 つの手法は、大きな文字配列をバッファーとして割り当て、文字列データをバッファーにコピーすることです。.NET Framework では、文字列は不変です。その場で変更することはできません。C# + 連結演算子は新しい文字列を作成し、大量のテキストを連結するとパフォーマンスが低下します。

ただし、.NET Framework には、文字列連結用に最適化された StringBuilder クラスが含まれています。C/C++ で文字配列を使用する場合と同じ利点が得られるだけでなく、(必要に応じて) バッファー サイズが自動的に拡大され、長さが追跡されます。この記事のサンプル アプリケーションは、StringBuilder クラスの使用方法を示し、パフォーマンスを連結と比較します。参照

StringBuilder を使用して、「002776766」を「012776766」に変更します。

StringBuilder sb = new StringBuilder(def);
sb[1] = '1';    
def = sb.ToString();
于 2012-11-26T09:07:07.850 に答える
8

Substringstring.Formatを見てください。

string result = string.Format("01{0}", abc.Substring(2));

またはRegex.Replace

string result = Regex.Replace(abc, "^00", "01");
于 2012-11-26T09:07:38.513 に答える
3

Regex.Replace()名前空間で見つけることができるものでそれを行うことができますSystem.Text.RegularExpressions

abc = Regex.Replace(abc ,"^00","01");
                        |      
                        |
                        |->^ depicts that start of the string
于 2012-11-26T09:07:49.900 に答える
0

これを試して

"00".Concat(abc.Substring(2));
"00".Concat(def.Substring(2));
于 2012-11-26T09:07:52.640 に答える
0

関数 Replace を Regex で使用できます。

like   var abc = "00345667";

       var newvar =Regex.Replace(abc, "^00", "01");     
于 2012-11-26T09:14:32.793 に答える