Я начинаю программировать на C # и у меня есть вопрос:
У меня есть строка символов вроде abcdef123456789
. Но строка слишком длинная, поэтому я хочу добавить :
автоматически после второго, четвертого, шестого… символа.
Как я могу это сделать?
3 ответа
Нет встроенного метода, который бы делал что-то подобное. Вам просто нужно поместить туда разделители, перебирая строку.
Вы можете перебирать символы в цикле и помещать их в StringBuilder
, добавляя двоеточие к каждому второму символу:
string input = "abcdef123456789";
StringBuilder builder = new StringBuilder();
int cnt = 0;
foreach (char c in input) {
if (cnt == 2) {
builder.Append(':');
cnt = 0;
}
builder.Append(c);
cnt++;
}
string output = builder.ToString();
Вы можете использовать StringBuilder и сделать что-то вроде этого:
string sourceStr = "123456789";
StringBuilder s = new StringBuilder();
foreach(char c in sourceStr){
s.append(c);
s.append(":");
}
Вы можете попробовать этот подход. Я попытался сделать его как можно более читабельным, так что, надеюсь, он имеет для вас смысл.
var s = "abcdef123456789";
var charsChanged = new List<char>();
for (var i = 0; i < s.Length; i++)
{
charsChanged.Add(s[i]);
var evenCharacter = i % 2 != 0;
var atEndOfString = i == s.Length - 1;
if (evenCharacter && !atEndOfString)
{
charsChanged.Add(':');
}
}
var updatedString = string.Concat(charsChanged));
updatedString
будет равно ab:cd:ef:12:34:56:78:9
.
Этот подход использует оператор модуля (%
), чтобы определить, находимся ли мы на четном или нечетном символе. Дополнительные примеры см. здесь.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.