[英]C# RegEx to match a pattern
對於編程問題,我需要將每個單詞的最后一個字母更改為大寫。 例如: This is a string
應更改為ThiS iS A strinG
。 我對正則表達式的了解很少,這就是我能想到的(這里s是我的字符串的變量名):
return Regex.Replace(s,@"(?:\w\s|\s\a)",c=>c.Value.ToUpper());
該表達式的問題在於它沒有轉換字符串的最后一個字母(即'strinG'中的'G')。 任何幫助表示贊賞。 謝謝
順便說一句,我可以針對這個問題提出另外兩種方法,但是如您所見,它們太笨拙了,我希望解決方案更加整潔。 1。
return new String(s.Select((x,i)=>(i+1==s.Length ||s[i+1]==' ')?Char.ToUpper(x):x).ToArray());
2。
return new String(((new CultureInfo("en-US",false)).TextInfo.ToTitleCase(new String(s.Reverse().ToArray()))).Reverse().ToArray());
用這個:
return Regex.Replace(s, @"(\w)\b", c => c.Value.ToUpper());
代替
?:\w\s|\s\a
采用
?:\w\b|\s\a
它在單詞邊界之前而不是空白處尋找字符。
正如OP指出的那樣,在響鈴字符之前也需要\\b
,因此:
?:\w\b|\b\a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.