簡體   English   中英

如何從字符串中刪除字符的確切出現?

[英]How to remove the exact occurence of characters from a string?

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

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

(編輯:我需要時間進行測試,我不是第一次^^)

怎么樣

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.join(",", str.split(',').ToList().remove("phani"));

從列表中刪除任何給定的名稱。

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(',')的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM