[英]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.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.