我很生气。通常我喜欢替换C#中的代理,但是它是否有C ++样式替换,它一次只替换一个字母或我指定的X量?
答案 0 :(得分:5)
BCL中没有替换方法,它只会替换该字符的单个实例。两种主要的替换方法将取代所有出现。但是,编写一个替换单个字符的版本并不是非常困难。
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();
}
答案 1 :(得分:2)
如果您只想替换一个匹配项,只需使用IndexOf和SubString。
答案 2 :(得分: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);
}
答案 3 :(得分:0)
如果您对进行角色替换感兴趣(特别是如果您只想进行特定数量的操作),那么您最好将字符串转换为char[]
和按索引进行操作,然后将其转换回字符串。你可以节省一些不必要的字符串创建,但这只有在你的替换长度和你要替换的长度相同时才有效。
答案 4 :(得分:0)
您可以编写一个扩展方法来替换第一个匹配项。