簡體   English   中英

.NET String.Replace

[英].NET String.Replace

我好惱火。 通常我喜歡像C#中那樣替換動作,但是有一個C ++樣式的替換,它一次只替換一個字母或我指定的X量嗎?

沒有在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();
}

如果您只想替換一個出現,只需使用IndexOf和SubString。

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);      
}

如果你有興趣進行角色替換(特別是如果你只想進行特定數量的操作),你可能最好將你的字符串轉換為char[]並在那里進行操作index,然后將其轉換回字符串。 你可以節省一些不必要的字符串創建,但這只有在你的替換長度與你要替換的長度相同時才有效。

您可以編寫一個擴展方法來替換第一個匹配項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM