簡體   English   中英

C#RegEx匹配模式

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

RegExr示例

暫無
暫無

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

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