2012-09-11 98 views
0

我有字符串變量如下如何在.NET中替換第一次出現的子字符串?

string pctSign = "\0\0\0"; 

我想更換前兩個字符「%」

i.e. Final o/p:- pctSign="%\0\0"; 

如何使用與string.replace做到這一點?

+0

嘗試使用'Substring'(可能與'IndexOf'結合)。 –

+0

可能的重複[如何替換.NET中的第一個*字符串實例?](http://stackoverflow.com/questions/141045/how-do-i-replace-the-first-instance-of -a-string-in-net) –

回答

4
// Option 1 
var result = "%" + pctSign.Remove(0, 2); 

// Option 2 
var result = "%" + pctSign.Substring(2); 

// Option 3 
var regex = new Regex("^\\0"); 
var result = regex.Replace(pctSign, "%"); 

如果你絕對要用戶String.Replace(),那麼你可以編寫自己的擴展方法:

public static class StringExtension 
{ 
    public static String Replace(this string self, 
             string oldString, string newString, 
             bool firstOccurrenceOnly = false) 
    { 
     if (!firstOccurrenceOnly) 
      return self.Replace(oldString, newString); 

     int pos = self.IndexOf(oldString); 
     if (pos < 0) 
      return self; 

     return self.Substring(0, pos) + newString 
       + self.Substring(pos + oldString.Length); 
    } 
} 

// Usage: 
var result = pctSign.Replace("/0", "%", true); 
+0

是否有任何方法可以使用Replace來編寫此代碼? –

+1

@AmolKolekar對於'String.Replace()'有兩個重載,它們都替換**給定字符串或char的所有**出現。字符串不提供只替換特定事件的「替換」方法。 –

+0

好的..我知道了..非常感謝你... –

0
string s = pctSign.Substring(2, pctSign.Length); 
s = "%" + s; 
2

試試這個:

var pctSign = "\0\0\0"; 
var result = string.Format("%{0}", pctSign.Substring(2)); 
+0

謝謝你的答案.. –

0

你的意思是隻有前兩個那麼

pctSign = "%"+pctSign.substring(2); 
+1

這將刪除所有出現的'/ 0',因爲這是'pctSign.substring(0,2)'計算的結果。 –

+0

@DennisTraub您正確 – dnyan86

相關問題