2

我很生气。通常,我喜欢像在 C# 中那样替换操作,但是是否有 C++ 样式的替换,它一次只替换一个字母或我指定的 X 数量?

4

5 回答 5

5

不,BCL 中没有 Replace 方法,它只会替换字符的单个实例。两个主要的 Replace 方法将替换所有出现的事件。但是,编写一个执行单个字符替换的版本并不难。

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

如果您只想替换一次,只需使用 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

如果您有兴趣进行逐个字符的替换(特别是如果您只想执行特定数量的操作),您最好将字符串转换为 achar[]并通过索引进行操作,然后将其转换回字符串。您将为自己节省一些不必要的字符串创建,但这仅在您的替换与您要替换的长度相同时才有效。

于 2009-04-06T12:58:53.860 回答
0

您可以编写一个扩展方法来替换第一次出现。

于 2009-04-06T13:00:17.413 回答