Как использовать каждую третью букву строки в 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);
Другие вопросы по тегам