如何从字符串中删除字符的确切出现?
例如,我有一个字符串,如:
string str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash";
我想从str
删除,phani
。
现在,我正在使用str = str.Replace(",phani", string.Empty);
然后我的输出是: str="santhosh,ravi123,praveen,sathish,prakash";
但我想要一个输出: str="santhosh,ravi,phani123,praveen,sathish,prakash";
string str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash"; var words = str.Split(','); str = String.Join(",", words.Where(word => word != "phani"));
更好的选择是使用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));
(编辑:我需要时间进行测试,我不是第一次^^)
String.join(",", str.split(',').ToList().remove("phani"));
从列表中删除任何给定的名称。
怎么样
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());
尝试使用逗号代替;
string str = "santhosh,ravi,phani,phani123,praveen,sathish,prakash"; str = str.Replace(",phani,", ","); Console.WriteLine(str);
输出将是;
santhosh,ravi,phani123,praveen,sathish,prakash
这是一个DEMO 。
正如Davin在评论中提到的,如果phani
是字符串中的最后一项,这将不起作用。 Silvermind的答案看起来像是正确的答案。
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
您可以使用正则表达式 ,但是当字符串以子字符串开头或结尾时,您必须处理以下情况:
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
,但只有在前面和后面跟着单词分隔字符(因为单词边界元字符\b
),并且它可以(但不一定)前面和后面跟逗号,谢谢,?
这意味着没有或多个逗号。
最后我们需要从字符串的开头和结尾删除可能的逗号,这就是结果上有Trim(',')
的原因。