2014-10-09 70 views
-6

如果我有,例如这String如果在单词的第一个字母是大写的情况下如何在单词前面添加一个字母?

String paragraphWord = "This is A String of 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

+6

“我想”是不是一个问题。 – 2014-10-09 19:28:43

+0

也许使用正则表达式?你似乎已经用你所尝试过的东西遗漏了那部分。 – 2014-10-09 19:29:11

+1

'string.Concat(“字符串”.Select(x => Char.IsUpper(x)?“我抄了我的作业”+ x:x.ToString()));' – 2014-10-09 19:34:16

回答

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

+0

这是一个很好的!这工作!谢谢 – LorenaL 2014-10-09 19:59:49

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

我可以问为什么你会觉得这个问题很糟糕,因为这个优点是提供一个答案吗?我真的不认为我们应该发送信息,我们为他们做人的功课。 – tnw 2014-10-09 19:48:41

+0

@tnw:如果它是作业,我不认为他可以使用LINQ。它没有花费那么多时间,也许对他或其他人有帮助。 – 2014-10-09 19:52:56

+0

是否有帮助是有争议的,因为我怀疑OP实际上学习*任何*如果他们甚至不必思考或尝试,因为有人只是为他们做了这件事......加上我仍然认为它鼓励帮助吸血鬼通常不好社区。 – tnw 2014-10-09 20:05:14

相关问题