2012-09-11 99 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

相关问题