2015-02-08 154 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); 
     } 
    } 
}