2014-10-09 68 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

相關問題