簡體   English   中英

如何在 C# 中將字符串的每三個字母大寫?

[英]How can I capitalize every third letter of a string in C#?

如何在 C# 中將字符串的每三個字母大寫?

我用for循環遍歷整個字符串,但我現在想不出序列。

我懷疑你只是想要這樣的東西:

// 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的初始值。

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

您已經在遍歷字符串中的字符了嗎? 然后添加一個計數器,在每次迭代時遞增,如果是 3,則使用.ToUpper(currentCharacter)使其大寫。 然后重置你的計數器。

您可以只使用正則表達式。

如果答案是每三個字符那么你想要

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;
                     });

如果需要循環,可以先轉換為字符數組,以便更改值。

每三個字符:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM