7

例如,我有一个字符串,如:

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";

4

7 回答 7

14
string str = "santhosh,phani,ravi,phani123,praveen,sathish,prakash";
var words = str.Split(',');
str = String.Join(",", words.Where(word => word != "phani"));
于 2013-03-06T10:44:54.917 回答
2

更好的选择是使用拆分和连接方法。在 Linq 中很容易:

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

(编辑:我花时间进行测试,我不是第一个^^)

于 2013-03-06T10:50:10.180 回答
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());
于 2013-03-06T10:41:09.533 回答
0

尝试用逗号代替;

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

输出将是;

santhosh,ravi,phani123,praveen,sathish,prakash

这是一个演示

正如 Davin在评论中提到phani的,如果是字符串中的最后一项,这将不起作用。Silvermind 的答案看起来是正确的答案。

于 2013-03-06T10:42:00.660 回答
0
String.join(",", str.split(',').ToList().remove("phani"));

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

于 2013-03-06T10:45:50.407 回答
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
于 2013-03-06T11:01:03.503 回答
0

您可以使用正则表达式,但您必须注意字符串以子字符串开头或结尾的情况:

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,?匹配 word phani,但前提是前后有单词分隔符(因为 word 边界元字符\b),并且可以(但不一定)前后有逗号谢谢这,?意味着没有或更多的逗号。

最后,我们需要从字符串的开头和结尾删除可能的逗号,这就是结果中存在的Trim(',')原因。

于 2016-03-16T19:57:29.893 回答