如果该单词的第一个字母是大写的,如何用字母前置一个单词?

时间:2014-10-09 19:27:46

标签: c# string word uppercase

如果我有这个String

String paragraphWord = "This is A String of WoRDs";

这是我想要的结果:

k k K 字符串 k WorDS

所以我想在第一个字母大写的每个单词之前添加 k 。怎么做?

这是我尝试过的没有成功的事情:

String paragraphWord = "This is A String of WoRDs";
String replacewords = string.Concat(paragraphWord.Select(c => char.IsUpper(c) ? "k" + c.ToString() : c.ToString())).TrimStart(); 

(错误的)结果是:kThis is kA kString of kWokRkDs

2 个答案:

答案 0 :(得分:2)

使用正则表达式:

string paragraphWord = "This is A String of WoRDs";
var reg = new Regex(@"(?<=^|\W)([A-Z])");
Console.WriteLine(reg.Replace(paragraphWord,"k$1"));

解释(?<=^|\W)([A-Z])

?<=     positive look behind
^|\W    start of the string or a whitespace character
[A-Z]   A single upper case letter

因此,我们正在寻找一个由字符串的开头或空格开始的单个大写字母。我们将该角色分组,以便我们可以在替换中使用它:

k$1

将我们与k和匹配组$1

匹配

答案 1 :(得分:1)

String kWords = string.Join(" ", "This is A String of WoRDs"
    .Split()
    .Select(w => Char.IsUpper(w[0]) ? "k" + w : w));