我想從字符串中刪除名稱。我讀過這麼多關於它的文章。他們建議維護一個數組列表以將所有名稱維護爲項目。有沒有任何方法可以在不維護數組的情況下刪除名稱。 我有一個字符串作爲根據文本從字符串中刪除一些單詞
string stVal="Naresh Jadapalli\r\nChandra shekhar ponnam\r\nBalu midhun gonu guntla";
現在我想從字符串中刪除名稱\r\nbalu midhun gonu guntla
。 謝謝。
我想從字符串中刪除名稱。我讀過這麼多關於它的文章。他們建議維護一個數組列表以將所有名稱維護爲項目。有沒有任何方法可以在不維護數組的情況下刪除名稱。 我有一個字符串作爲根據文本從字符串中刪除一些單詞
string stVal="Naresh Jadapalli\r\nChandra shekhar ponnam\r\nBalu midhun gonu guntla";
現在我想從字符串中刪除名稱\r\nbalu midhun gonu guntla
。 謝謝。
您也可以嘗試這種模式:
(?i)Balu midhun gonu guntla(\r\n)*|(\r\n)+Balu midhun gonu guntla(\r\n)*$
見的例子:
string pattern = "(?i)Balu midhun gonu guntla(\r\n)*|(\r\n)+Balu midhun gonu guntla(\r\n)*$";
string stVal = "Balu midhun gonu guntla\r\n\r\nNaresh Jadapalli\r\nNaresh Jadapalli";
string res1 = Regex.Replace(stVal, pattern, "");
stVal = "Naresh Jadapalli\r\n\r\nBalu midhun gonu guntla\r\n\r\nChandra shekhar ponnam\r\n\r\nBalu midhun gonu guntla\r\n\r\n";
string res2 = Regex.Replace(stVal, pattern, "");
stVal = "Naresh Jadapalli\r\n\r\nChandra shekhar ponnam\r\nChandra shekhar ponnam\r\n\r\nBalu midhun gonu guntla\r\n\r\n";
string res3 = Regex.Replace(stVal, pattern, "");
根據stVal = stVal.Replace(「\ r \ nBalu midhun gonu guntla」,「」);第一名不會有\ r \ n。噓它不會取代第一個名字 –
檢查我的第二個解決方案。 – NeverHopeless
你的第二個正則表達式正在刪除1st \ r \ n ..不能刪除最後\ r \ n –
假設,即是一個錯字,它應該是:
var strToRemove = "Balu midhun gonu guntla";
那麼代碼看起來是這樣的:
stVal.Remove(stVal.IndexOf(strToRemove), strToRemove.Length);
如果它不是一個錯字,那就用另一個IndexOf
過載:
stVal.Remove(stVal.IndexOf(strToRemove, StringComparison.CurrentCultureIgnoreCase), strToRemove.Length);
'stVal = stVal如何?替換(「\ n \ rBalu midhun gonu guntla」,「」)'? – unlimit
@unlimit:漠不關心。解決相同任務的另一種方法,目前尚不清楚。我的意思是,OP是否想刪除單個事件或所有事件? – Dennis
如果輸入字符串沒有搜索字符串,此解決方案將崩潰。 :)所以不要忘記檢查搜索字符串的存在。 – NeverHopeless
要做t他的正確,你必須說明分隔符。
如果您不這樣做,那麼如果您要替換的名稱作爲列表中另一個名稱的子字符串出現,則會出現錯誤。
例如,想象一下,如果你更換「馬太福音」這個字符串中:
"Matthew Smith\r\nMatthew\r\nMatthew Watson"
想必你只想要替換爲「\ r \ nMatthew \ r \ n」,中間給:
"Matthew Smith\r\nMatthew Watson"
但如果你忽略了分隔符,你會得到這樣的:
" Smith\r\nMatthew\r\nMatthew Watson"
下實現方法具d將刪除的第一個匹配,正確地分配分隔符。請注意,它也必須處理字符串開頭和結尾處的特殊情況,因爲在開始或結尾沒有分隔符。
/// <summary>This removes the first occurrence of the specified target string in the given text.</summary>
/// <param name="text">The text from which to remove the target string.</param>
/// <param name="target">The target string to remove.</param>
/// <param name="delimiter">The delimiter string used between potential target strings.</param>
/// <returns>The text with first occurrence (if any) of the target string removed.</returns>
public static string RemoveFirstMatch(string text, string target, string delimiter)
{
if (text == null)
throw new ArgumentNullException("text");
if (target == null)
throw new ArgumentNullException("target");
if (text.StartsWith(target + delimiter))
return text.Substring(target.Length + delimiter.Length);
if (text.EndsWith(delimiter + target))
return text.Substring(0, text.Length - target.Length - delimiter.Length);
return text.Replace(delimiter + target + delimiter, delimiter);
}
樣品測試代碼:
string stVal="aaaa\r\naaab\r\naaab\r\naaac";
string delimiter = "\r\n";
Console.WriteLine(RemoveFirstMatch(stVal, "aaaa", delimiter) + "\n-------------");
Console.WriteLine(RemoveFirstMatch(stVal, "aaab", delimiter) + "\n-------------");
Console.WriteLine(RemoveFirstMatch(stVal, "aaac", delimiter) + "\n-------------");
謝謝你爲stVal = stVal.Replace(「\ n \ r \ n \ r」,「\ n \ r」); –
問題首先和最後\ r \ n ..你能幫助我嗎.. –
@NareshJadapalli是的,肯定有一些問題與天真的方法。我會在幾分鐘內更新我的帖子。 –
簡單的解決方案,這對使用正則表達式查找被請求的發生並代之以智慧^ h需要的話
你可以在C# RegEx Match
現在您有在'\ r \ N'麻煩找好樣本。請仔細檢查它是\ r \ n'還是\ n \ r'。 – NeverHopeless
sry .. thats \ r \ n ..我現在編輯過..當我使用stVal = stVal.Replace(「\ r \ n \ r \ n」,「\ r \ n」); ..運行良好。但是第一次也是最後一次\ r \ n不會取代.. –
好吧,請嘗試我已編輯的答案。我在評論中早些時候提到了這一點。 – NeverHopeless