2014-03-04 52 views
0

有沒有人知道如何在C#中的字符串的每個第三個字母大寫?我用for循環遍歷整個字符串,但我現在無法想象這個序列。如何將C#中的每一個字符串都轉換爲大寫?

在此先感謝

+4

每三個字符拜託你給你的字符串,並告訴我們你想要的結果是什麼? –

+0

如何使用計數器,使其計數到2,當它遇到2時,將字母大寫並將計數器重置爲0? – Thousand

+0

使用計數器和mod 3 –

回答

1

您通過串裏面的人物已經循環?然後添加一個計數器,在每次迭代中增加一個計數器,如果它是3,則使用.ToUpper(currentCharacter)使其大寫。然後重置你的櫃檯。

+0

你爲什麼要增加1,然後檢查它是否是3?你已經需要知道角色的索引,所以每次迭代只需增加3。 –

+0

他已經循環了整個字符串,這就是爲什麼。 – Robert

+0

我的解釋是:「我試過通過循環遍歷整個字符串來做這件事,但後來我被卡住了。」即使情況並非如此,您可以繼續增加計數器並檢查'計數器%3'是否爲0 - 無需重置計數器。 –

12

我懷疑你只是想這樣的事情:

// String is immutable; copy to a char[] so we can modify that in-place 
char[] chars = input.ToCharArray(); 
for (int i = 0; i < chars.Length; i += 3) 
{ 
    chars[i] = char.ToUpper(chars[i]); 
} 
// Now construct a new String from the modified character array 
string output = new string(chars); 

要開始從第一個字母大寫,它假定,所以「ABCDEFGHIJ」將成爲「ABCDEFGHIJ」。如果您想開始在其他地方資本化,只需更改初始值i

+0

這可能會通過一個異常,而試圖將上限轉換爲特殊字符。 –

+0

@AtabtabAhmed不,它不會。 – Kippie

+1

@AtabtabAhmed:不會的。例如,char.ToUpper('1')'就是'1'。查看'char.ToUpper'的文檔 - 是否提供了有關拋出異常的內容? –

6
 var s = "Lorem ipsum"; 
     var foo = new string(s 
      .Select((c, i) => (i + 1) % 3 == 0 ? Char.ToUpper(c) : c) 
      .ToArray()); 
+1

雖然這會起作用,但對我來說使用LINQ感覺對我來說太過於矯枉過正了) –

+1

@JonSkeet:從我的角度來看,它更具可讀性 – Dennis

+0

公平 - ) –

0

你可以只使用正則表達式

如果答案是每三個字符,然後你想

var input="sdkgjslgjsklvaswlet"; 
var regex=new Regex("(..)(.)"); 
var replacement = regex.Replace(input , delegate(Match m) 
        { 
          return m.Groups[1].Value + m.Groups[2].Value.ToUpper(); 
        }); 

如果你想每三個字符但在開始首先你要

var input="sdkgjslgjsklvaswlet"; 
var regex=new Regex("(.)(..)"); 
var replacement = regex.Replace(input , delegate(Match m) 
        { 
          return m.Groups[1].Value.ToUpper() + m.Groups[2].Value; 
        }); 

如果你想要一個循環,你可以先轉換成一個char數組,然後你可以改變這個值

每隔3個字符:

var x=input.ToCharArray(); 
for (var i = 2; i <x.Length; i+=3) { 
    x[i]=char.ToUpper(x[i]); 
} 
var replacement=new string(x); 

從一開始就

var x=input.ToCharArray(); 
for (var i = 0; i <x.Length; i+=3) { 
    x[i]=char.ToUpper(x[i]); 
} 
var replacement=new string(x); 
相關問題