刪除特定字符串我想如果存在正則表達式,如果存在
所以
ABCD => ABCD
ABCD-L => ABCD
此刻我正在使用類似的線從我的字符串的末尾刪除-L
低於在我的正則表達式中使用if/else
類型的排列,但是,我有一種感覺,它應該比這更容易。
var match = Regex.Match("...", @"(?(\S+-L$)\S+(?=-L)|\S+)");
刪除特定字符串我想如果存在正則表達式,如果存在
所以
ABCD => ABCD
ABCD-L => ABCD
此刻我正在使用類似的線從我的字符串的末尾刪除-L
低於在我的正則表達式中使用if/else
類型的排列,但是,我有一種感覺,它應該比這更容易。
var match = Regex.Match("...", @"(?(\S+-L$)\S+(?=-L)|\S+)");
如何只是在做:
Regex rgx = new Regex("-L$");
string result = rgx.Replace("ABCD-L", "");
所以基本上:如果字符串以-L
結束時,替換爲空字符串的一部分。
如果您不僅希望在字符串末尾調用替換,還要在字末尾調用替換,您還可以添加一個額外開關來檢測字符邊界(\b
)以及字符串末尾:
Regex rgx = new Regex("-L(\b|$)");
string result = rgx.Replace("ABCD-L ABCD ABCD-L", "");
請注意,檢測字邊界可能有點模糊。請參閱here以獲取C#中被認爲是單詞字符的字符列表。
使用Regex.Replace
功能,
Regex.Replace(string, @"(\S+?)-L(?=\s|$)", "$1")
說明:
( group and capture to \1:
\S+? non-whitespace (all but \n, \r, \t, \f,
and " ") (1 or more times)
) end of \1
-L '-L'
(?= look ahead to see if there is:
\s whitespace (\n, \r, \t, \f, and " ")
| OR
$ before an optional \n, and the end of
the string
) end of look-ahead
您還可以使用與string.replace()方法查找字符串中的特定字符串,在這種情況下用另一個字符串替換爲空字符串。
http://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx
您當然可以使用正則表達式這一點,但爲什麼用普通的字符串函數時更清晰?
比較:
text = text.EndsWith("-L")
? text.Substring(0, text.Length - "-L".Length)
: text;
這樣:
text = Regex.Replace(text, @"(\S+?)-L(?=\s|$)", "$1");
或者更好的是,像這樣定義一個擴展方法:
public static string RemoveIfEndsWith(this string text, string suffix)
{
return text.EndsWith(suffix)
? text.Substring(0, text.Length - suffix.Length)
: text;
}
然後你的代碼可以是這樣的:
text = text.RemoveIfEndsWith("-L");
當然,你總是可以使用Regex定義擴展方法。至少你的調用代碼看起來更清晰,並且更具可讀性和可維護性。
您的比較錯誤。你應該將你的解決方案與新的Regex(「 - L $」)進行比較。替換(text,「」);' – 2014-11-06 02:27:21
@RobbyCornelissen - 這段代碼肯定比我用過的正則表達式更好,但它仍然不太明顯到它做什麼。 – Enigmativity 2014-11-06 03:57:17
和'string.Replace和string.Contains'方法不適合你..? [String.Replace(string,string)](http://msdn.microsoft.com/en-us/library/fk49wtc1(v = vs.110)。aspx) – MethodMan 2014-11-06 02:02:52
這是相當大的正則表達式的一部分,如果我想把它分解成一個C#代碼,它將轉化爲相當數量的行。就這樣。 – Mehrad 2014-11-06 02:05:29
再次爲什麼使用正則表達式,如果你不明白它..使用string.Replace它更容易理解和併入string.Contains方法 – MethodMan 2014-11-06 02:06:20