如何将C#中字符串的每三个字母大写?
如何将C#中字符串的每三个字母大写如何将C#中字符串的每三个字母大写?,c#,.net,capitalize,C#,.net,Capitalize,如何将C#中字符串的每三个字母大写 我用for循环遍历整个字符串,但我现在想不出序列。您已经在遍历字符串中的字符了吗?然后添加一个计数器,在每次迭代中递增,如果它是3,则使用.ToUpper(currentCharacter)将其设为大写。然后重置计数器。我想你只是想要这样的东西: // String is immutable; copy to a char[] so we can modify that in-place char[] chars = input.ToCharArray();
我用for循环遍历整个字符串,但我现在想不出序列。您已经在遍历字符串中的字符了吗?然后添加一个计数器,在每次迭代中递增,如果它是3,则使用
.ToUpper(currentCharacter)
将其设为大写。然后重置计数器。我想你只是想要这样的东西:
// 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);
//字符串是不可变的;复制到char[],以便我们可以在适当的位置修改它
char[]chars=input.ToCharArray();
对于(int i=0;i
假设你想从第一个字母开始大写,那么“abcdefghij”将变成“abcdefghij”。如果您想在其他地方开始大写,只需更改
i
的初始值,就可以使用正则表达式
var s = "Lorem ipsum";
var foo = new string(s
.Select((c, i) => (i + 1) % 3 == 0 ? Char.ToUpper(c) : c)
.ToArray());
如果答案是每隔三个字符,那么您需要
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();
对于(var i=2;我可以请您显示您的字符串并告诉我们结果是什么吗?使用计数器,使其计数为2,当它达到2时,大写字母并将计数器重置为0?使用计数器和mod 3这是从第一个字符开始还是第三个字符(即,这是字符1,4,7,…还是这是字符3,6,9,…)?为什么要将其递增1,然后检查是否为3?您已经需要知道字符的索引,所以每次迭代时只需将其递增3。我将其解释为“我尝试通过循环整个字符串来执行此操作,但后来我卡住了。”即使不是这样,您也可以继续递增计数器,并检查计数器%3是否为0-无需重置它。虽然这会起作用,但使用LINQ进行此操作对我来说感觉太过分了。很公平-每个计数器都有自己的:)这可能是因为在尝试向特殊角色施放upper时出现异常。@AftabAhmed不,不会。@AftabAhmed:不会<例如,code>char.ToUpper('1')
就是'1'
。请看char.ToUpper
-这说明了抛出异常吗?@JonSkeet+1没有立即跳上“坏问题”的行列,这确实令人耳目一新…@jdpenix:这不是一个很好的问题,这是肯定的-没有样本输入/输出,没有代码显示已经尝试过的内容,问了这个问题之后就没有互动了:(
var x = input.ToCharArray();
for (var i = 0; i <x.Length; i+=3) {
x[i] = char.ToUpper(x[i]);
}
var replacement = new string(x);