字符串替换 C#
String Replacement 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。有什么想法吗?
如果您可以轻松识别某些 "delimiter" 个字符,一种可能性是 1. 使用 string.Split
将您的输入字符串分成几个部分;然后 2. 选择您想要的部分,最后 3. "glue" 使用 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());
使用正则表达式,
\b
表示字边界。这是 C# Pad
上的示例
string x = "KESRNAN FOREST S BV";
var result = System.Text.RegularExpressions.Regex.Replace(x, @"\bS\b", "");
Console.WriteLine(result);
使用正则表达式:
string input = "S KESRNAN FOREST S BV S";
string result = Regex.Replace(input, @"\b(S)", "");
如你所见,S 在 space " "
之前。换句话说,有这个字符串 "S "
想要替换它。
试试这个:
string TestString = "KESRNAN FOREST S BV";
string replacement = TestString.Replace("S ", "");
做你想做的另一种方法:
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);
}
}
}
希望你能给我一些启发:
我有这个变量
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。有什么想法吗?
如果您可以轻松识别某些 "delimiter" 个字符,一种可能性是 1. 使用 string.Split
将您的输入字符串分成几个部分;然后 2. 选择您想要的部分,最后 3. "glue" 使用 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());
使用正则表达式,
\b
表示字边界。这是 C# Pad
上的示例string x = "KESRNAN FOREST S BV";
var result = System.Text.RegularExpressions.Regex.Replace(x, @"\bS\b", "");
Console.WriteLine(result);
使用正则表达式:
string input = "S KESRNAN FOREST S BV S";
string result = Regex.Replace(input, @"\b(S)", "");
如你所见,S 在 space " "
之前。换句话说,有这个字符串 "S "
想要替换它。
试试这个:
string TestString = "KESRNAN FOREST S BV";
string replacement = TestString.Replace("S ", "");
做你想做的另一种方法:
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);
}
}
}