Как использовать каждую третью букву строки в C#?
Кто-нибудь знает, как использовать каждую третью букву строки в C#? Я перебираю всю строку с помощью цикла for, но сейчас я не могу думать о последовательности.
заранее спасибо
4 ответа
Я подозреваю, что вы просто хотите что-то вроде этого:
// 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);