2

私はとてもイライラしています。通常、私は C# のように動作する置換が好きですが、一度に 1 文字または指定した X 量だけを置換する C++ スタイルの置換はありますか?

4

5 に答える 5

5

BCL には、文字の 1 つのインスタンスのみを置換する Replace メソッドはありません。2 つの主要な Replace メソッドは、すべてのオカレンスを置き換えます。ただし、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();
}
于 2009-04-06T12:57:17.530 に答える
2

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

于 2009-04-06T12:57:01.633 に答える
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);      
}
于 2010-01-13T12:49:07.393 に答える
0

文字ごとの置換を行うことに興味がある場合(特に、特定の数の操作のみを実行したい場合)、文字列をaに変換し、char[]そこでインデックスを使用して操作を行うとよいでしょう。文字列に変換し直します。不必要な文字列の作成を節約できますが、これは、置換が置換するものと同じ長さである場合にのみ機能します。

于 2009-04-06T12:58:53.860 に答える
0

最初のオカレンスだけを置き換える拡張メソッドを作成できます。

于 2009-04-06T13:00:17.413 に答える