C#替换部分字符串但只能完全匹配?

时间:2011-12-26 18:18:12

标签: c#

我有string beginString = "apple|fruitsapple|turnip";

我想做的只是用芒果代替苹果,而不是用fruitapple代替。

string fixedString = beginString.Replace("apple","mango");这不起作用,因为它取代了apple和fruitsapple。

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

beginString =  "|" + beginString + "|";
fixedString = beginString.Replace("|apple|","|mango|");

答案 1 :(得分:3)

这不能按照您所说的方式完成,因为它会将整个字符串视为字符串。您可以通过|进行拆分你已经使用过或者在列表中有字符串并使用equals然后替换它。

String[] words = beginString.Split("|");

现在替换单词。适用于任何场景。

答案 2 :(得分:1)

最近我能得到。是否会建议正则表达,但这并不总是按你的意愿行事。你必须首先拆分字符串,然后重新制作它。

string searchString = "apple";
string newString = "mango";

string beginString = "apple|fruitsapple|turnip";

string[] array = beginString.Split('|');
foreach (var item in array)
{
    if (item == searchString)
        item.Replace(searchString, newString);
}

string recreated = "";
new List<string>(array).ForEach(e => recreated += e + "|");
recreated.TrimEnd('|');

答案 3 :(得分:1)

string newstr = Regex.Replace("apple|fruitsapple|turnip", @"\bapple\b", "mango");

答案 4 :(得分:1)

LINQ风格的其他答案的变化:

string fixedString = string.Join("|",
                                 beginString
                                    .Split('|')
                                    .Select(s => s != "apple" ? s : "mango"));