2013-05-15 120 views
0

我有一个像字符串查找和替换

string text="~aaa~bbb~ccc~bbbddd"; 

字符串输入值将是:BBB

所以在上面的字符串我要删除值“〜BBB”

结果字符串应该是

text="~aaa~ccc~bbbddd"; 
+0

您是否尝试过搜索?一个用于“C#字符串替换”的快速Google应该可以找到['String.Replace()'方法](http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx)...同样用于删除节,['String.Remove()'方法](http://msdn.microsoft.com/en-us/library/system.string.remove.aspx)。 – anaximander

+0

解释你想要什么? –

回答

1

我不知道什么是你想做的事,但如果我已经有了它,你可以这样做:

private string ReplaceFirstOccurrence(string Source, string Find, string Replace) 
{ 
int Place = Source.IndexOf(Find); 
string result = Source.Remove(Place, Find.Length).Insert(Place, Replace); 
return result; 
} 

var result =ReplaceFirstOccurrence(text,"~"+input,""); 
+1

结果应该是'〜aaa〜ccc〜bbbddd',但你的是:'〜aaa〜cccddd' – Mehran

+0

你的方法也会取代最后一部分。所以“〜aaa〜bbb〜ccc〜bbbddd”会变成“〜aaa〜cccddd”。 – pyrocumulus

+0

这不起作用。它也会替换最后一段中的'bbb'。 – Habib

4

一种方法是:

string text = "~aaa~bbb~ccc~bbbddd"; 
string newStr = string.Join("~", text.Split('~').Where(r => r != "bbb")); 

但是,如果性能是考虑再考虑到一些其他的解决办法

1

这应该做的伎俩:

string searchValue = "bbb"; 
text = text.Replace(String.Format("~{0}~", searchValue), "~"); 

一定要搜索对于结尾〜字符,否则你也将替换〜bbbddd的一部分。

1

您可以使用正则表达式@ “\ bMYWORDTOREPLACE \ B” 在C#中,这将是...

using System.Text.RegularExpressions; 

myString = Regex.Replace(myString, @"\bbbb\b", "", RegexOptions.IgnoreCase); 
+0

谢谢它的工作! – Vetti85

0

像这样

string str = "~rajeev~ravi"; 
string strRemove = "rajeev"; 
string strNew =str.Replace("~"+strRemove ,""); 
0
public static string Replace(this String str, char[] chars, string replacement) 
    { 
     StringBuilder output = new StringBuilder(str.Length); 
     bool replace = false; 
     if (chars.Length - 1 < 1) 
     { 
      for (int i = 0; i < str.Length; i++) 
      { 

       char c = str[i]; 
       replace = false; 
       // int val = Regex.Matches(ch.ToString(), @"[a-zA-Z]").Count; 


       for (int j = 0; j < chars.Length; j++) 
       { 
        if (chars[j] == c) 
        { 
         replace = true; 

         break; 

        } 

       } 

       if (replace) 
        output.Append(replacement); 
       else 
        output.Append(c); 
      } 
     } 
     else 
     { 

      int j = 0; 
      int truecount = 0; 
       char c1 = '\0'; 
       for (int k = 0; k < str.Length; k++) 
       { 
        c1 = str[k]; 

        if (chars[j] == c1) 
        { 
         replace = true; 
         truecount ++; 


        } 

        else 
        { 
         truecount = 0; 
         replace = false; 
         j = 0; 
        } 
        if(truecount>0) 
        { 
         j++; 
        } 

        if (j > chars.Length-1) 
        { 
         j = 0; 
        } 

        if (truecount == chars.Length) 
        { 
         output.Remove(output.Length - chars.Length+1, chars.Length-1); 
         // output.Remove(4, 2); 
         if (replace) 
          output.Append(replacement); 
         else 
          output.Append(c1); 
        } 
        else 
        { 
         output.Append(c1); 
        } 


       } 

     } 


     return output.ToString(); 
    } 


static void Main(string[] args) 
{ 

    Console.WriteLine("Enter a word"); 
    string word = (Console.ReadLine()); 

    Console.WriteLine("Enter a word to find"); 
    string find = (Console.ReadLine()); 

    Console.WriteLine("Enter a word to Replace"); 
    string Rep = (Console.ReadLine()); 

    Console.WriteLine(Replace(word, find.ToCharArray(), Rep)); 
    Console.ReadLine(); 

} 

}

0

好,你可以做这样的事情。
(你只需要输入 'BBB')

string text = "~aaa~bbb~ccc~bbbddd"; 
string input = "bbb";     

string output = text.Replace("~" + input + "~", "~"); 
Console.WriteLine(output); 

输出:〜AAA〜CCC〜bbbddd