2015-02-08 200 views
0

希望你能給我一些這方面的光:字符串替換C#

我有這個變種

string TestString = "KESRNAN FOREST S BV"; 

我想替換在S單獨的,所以我試着用以下

public static string FixStreetName(string streetName) 
    { 
     string result = ""; 
     string stringToCheck = streetName.ToUpper(); 
    // result = stringToCheck.Replace(StreetDirection(stringToCheck), "").Replace(StreetType(stringToCheck),"").Trim(); 

     result = stringToCheck.Replace("S", "").Replace("BV", "").Trim(); 

     return result; 
    } 

但是,這是取代該字符串上的所有S.有任何想法嗎?

+7

你就不能使用'.Replace( 「S」, 「」)'? – 2015-02-08 15:18:51

+2

研究正則表達式。 – DrKoch 2015-02-08 15:20:58

+1

不,因爲如果S位於字符串的末尾,它將不適用於實例字符串TestString =「KESRNAN FOREST BV S」; – AFF 2015-02-08 15:22:48

回答

1

如果你可以很容易地識別某些「分隔符」字,一種可能性是分裂您輸入字符串轉換成使用string.Split幾個部分;然後2.挑選你想要的部分,最後 「膠水」 他們重新走到一起使用string.Join

var partsToExclude = new string[] { "S", "BV" }; 

/* 1. */ var parts = stringToCheck.Split(' '); 
/* 2. */ var selectedParts = parts.Where(part => !partsToExclude.Contains(part)); 
/* 3. */ return string.Join(" ", selectedParts.ToArray()); 
3

使用正則表達式,

\ b

表示單詞邊界。這裏是C# Pad

string x = "KESRNAN FOREST S BV"; 

var result = System.Text.RegularExpressions.Regex.Replace(x, @"\bS\b", ""); 

Console.WriteLine(result); 
0

一個例子使用正則表達式:

string input = "S KESRNAN FOREST S BV S"; 
string result = Regex.Replace(input, @"\b(S)", ""); 
0

正如你可以看到獨自S是一個空間" "之前。換句話說,有這個字符串"S ",它想要替換它。

試試這個:

 string TestString = "KESRNAN FOREST S BV"; 
     string replacement = TestString.Replace("S ", ""); 
0

做你想要什麼樣的另一種方式:

using System; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string testString = "S KESRNAN S FOREST BV S"; 
      // deleting S in middle of string 
      for (int i = 1; i < testString.Length-1; i++) 
      { 
       if (testString[i]=='S'&&testString[i-1]==' '&&testString[i+1]==' ') 
        testString=testString.Remove(i,2); 
      } 
      // deleting S in the begining of string 
      if (testString.StartsWith("S ")) 
       testString = testString.Remove(0, 2); 
      // deleting S at the end of string 
      if (testString.EndsWith(" S")) 
       testString = testString.Remove(testString.Length-2, 2); 
      Console.WriteLine(testString); 
     } 
    } 
}