如何从字符串中删除字符的确切出现?

时间:2013-03-06 10:39:05

标签: c# asp.net .net

例如,我有一个字符串:

string str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash";

我想从,phani删除字符str

现在,我正在使用str = str.Replace(",phani", string.Empty);

然后我的输出是:str="santhosh,ravi123,praveen,sathish,prakash";

但我想要一个输出:str="santhosh,ravi,phani123,praveen,sathish,prakash";

7 个答案:

答案 0 :(得分:14)

string str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash";
var words = str.Split(',');
str = String.Join(",", words.Where(word => word != "phani"));

答案 1 :(得分:2)

更好的选择是使用Split和Join方法。 Linq很容易:

String str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash";
String token = "phani";
String result = String.Join(",", str.Split(',').Where(s => s != token));

(编辑:我需要时间进行测试,我不是第一次^^)

答案 2 :(得分:0)

怎么样

str = str.Replace(",phani,", ",");

但是,如果“phani”是字符串中的最后一项,则此操作无效。要解决这个问题,你可以这样做:

string source = "...";
source += ",";    // Explicitly add a comma to the end

source = source.Replace(",phani,", ",").TrimEnd(',');

这会添加一个逗号,替换“phani”并删除尾随的逗号。

第三种解决方案是:

str = String.Join(",", str.Split(',').ToList().Remove("phani").ToArray());

答案 3 :(得分:0)

尝试使用逗号代替;

string str = "santhosh,ravi,phani,phani123,praveen,sathish,prakash";
str = str.Replace(",phani,", ",");
Console.WriteLine(str);

输出将是;

santhosh,ravi,phani123,praveen,sathish,prakash

这是 DEMO

作为Davin mentioned发表评论,如果phani是字符串中的最后一项,则无效。 Silvermind的answer看起来是正确答案。

答案 4 :(得分:0)

String.join(",", str.split(',').ToList().remove("phani"));

从列表中删除任何给定名称。

答案 5 :(得分:0)

string str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash";
string pattern = @"\b,phani,\b";
string replace = ",";
Console.WriteLine(Regex.Replace(str, pattern, replace));

输出:

santhosh,ravi,phani123,praveen,sathish,prakash

答案 6 :(得分:0)

您可以使用the regular expression,但是当字符串以子字符串开头或结尾时,您必须处理以下情况:

var pattern = @",?\bphani\b,?";
var regex = new Regex(pattern);
var result = regex.Replace(input, ",").Trim(',');

较短的符号可能如下所示:

var result = Regex.Replace(input, @",?\bphani\b,?", ",").Trim(',');

正则表达式的说明: ,?\bphani\b,?匹配单词phani,但前提是前后跟单词分隔符(因为单词边界元字符{{ 1}}),它可以(但不一定必须)以逗号开头和后跟,这要归功于\b,这意味着没有或更多的逗号。

最后,我们需要从字符串的开头和结尾删除可能的逗号,这就是结果的,?的原因。