2009-04-06 6 views
2

私はとても迷惑です。私はC#と同じように置換を行うのが好きですが、一度に1文字または指定したXの量だけを置換するC++スタイルの置換えはありますか?.NET String.Replace

答えて

5

いいえ文字の1つのインスタンスだけを置き換える置換メソッドはBCLにありません。 2つの主要な置換メソッドは、すべての出現を置き換えます。しかし、1文字の置換を行うバージョンを作成することは非常に難しいことではありません。あなたは文字と文字の置換を(あなただけの操作の特定の数をしたい場合は特に)やってに興味があるなら

public static string ReplaceSingle(this string source, char toReplace, char newChar) { 
    var index = source.IndexOf(toReplace); 
    if (index < 0) { 
    return source; 
    } 
    var builder = new StringBuilder(); 
    for(var i = 0; i < source.Length; i++) { 
    if (i == index) { 
     builder.Append(newChar); 
    } else { 
     builder.Append(source[i]); 
    } 
    } 
    return builder.ToString(); 
} 
2

オカレンスの1つだけを置き換えたい場合は、IndexOfとSubStringを使用してください。

0

、あなたはおそらくchar[]とにあなたの文字列を変換するためにうまくやっ思いあなたの操作をインデックスで行い、それを文字列に戻します。あなたは不必要な文字列の作成を自分で省くことができますが、置き換えた文字列と同じ長さの文字列がある場合にのみ機能します。

0

最初のオカレンスだけを置換する拡張メソッドを記述することができます。

1
public string ReplaceString(string source,int index,string newString) 
{  
    char[] sourceArray=source.ToCharArray();  
    char[] newArray=newString.ToCharArray();  
    for(int i=index;i<index+newString.Length ;i++) 
     sourceArray[i]=newArray[i]; 
    return new string(sourceArray);  
} 
+0

1)既に回答があり、私はそれを受け入れました。 2)あなたはこれを読めないようにする1010コードボタンを使いませんでした。 –

関連する問題