例如,我有一个字符串:
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";
答案 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
,这意味着没有或更多的逗号。
最后,我们需要从字符串的开头和结尾删除可能的逗号,这就是结果的,?
的原因。