对于编程问题,我需要将每个单词的每个字母都改为大写。 Egs:This is a string
应更改为ThiS iS A strinG
。我对正则表达式的了解很少,这就是我能想到的(这里是我的字符串的变量名):
return Regex.Replace(s,@"(?:\w\s|\s\a)",c=>c.Value.ToUpper());
这个表达式的问题在于它没有转换字符串的最后一个字母表(即' G'在' strinG')。任何帮助表示赞赏。感谢
BTW还有两种方法可以解决这个问题,但是你看到它们太笨拙了,我希望解决方案更整洁。 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());
答案 0 :(得分:1)
使用此:
return Regex.Replace(s, @"(\w)\b", c => c.Value.ToUpper());
答案 1 :(得分:-1)
而不是
?:\w\s|\s\a
使用
?:\w\b|\s\a
在字边界而不是空格之前查找字符。
正如OP指出的那样,在铃声字符之前也需要\b
,因此:
?:\w\b|\b\a