#c#
#c#
Вопрос:
Я практикую C#
Я хочу удалить среднюю подстроку из массива символов и добавить ее в fornt
Пример 1
массив символов = «Fbh3dfbn8»
Подстрока с 3 по 7 удаляется и добавляется в начале:
массив символов = «3dfFbhbn8»
Пример 2
массив символов = E5SS6SkGDE
Подстрока с 4 по 7 удаляется и добавляется в начале:
массив символов= S6SkE5SGDE
В принципе, я хочу разделить строку на 3 части, где длина 1-й и 3-й подстрок одинакова.
if (charArray.ToString().Length % 2 != 0 amp;amp; charArray.ToString().Length >= 3)
{
string subStringCharArray = charArray.ToString().Substring(charArray.ToString().Length / 2 - 1, 3);
charArray.ToString().IndexOf(subStringCharArray);
string changedString = subStringCharArray charArray.ToString();
}
Это мой код. При указании строки subStringCharArray
внутри if
условия я всегда получаю m.C as a output.But there is no
m.C` в моем массиве символов.
Может ли кто-нибудь помочь мне или направить меня к созданию этого метода.
Спасибо
Ответ №1:
Используйте new String(charArray)
вместо charArray.ToString()
Char[] charArray = new Char[]{'a', 'b', 'c'};
charArray.ToString()
строка «abc» не будет. Это будет ‘System.Char[]’ для любого возможного массива.
Также
charArray.ToString().IndexOf(subStringCharArray);
ничего не изменит ни в массиве, ни в строке. Он просто возвращает индекс номера подстроки. Это ничего не меняет.
Вы могли бы попробовать что-то вроде:
Char[] charArray = new Char[] { '1', '2', '3', '4', '5', '6', '7' };
String charArrayAsString = new String(charArray);
String result = null;
if (((charArrayAsString.Length % 2) != 0) amp;amp;
(charArrayAsString.Length >= 3))
{
Int32 middleBegins = charArrayAsString.Length / 2 - 1;
Int32 middleLen = 3;
result = charArrayAsString.Substring(middleBegins, middleLen)
charArrayAsString.Substring(0, middleBegins)
charArrayAsString.Substring(middleBegins middleLen);
}
Console.WriteLine(result);
Ответ №2:
Попробуйте это:
string input = "E5SS6SkGDE";
char[] array = input.ToCharArray();
var result =
array.Skip(3).Take(4)
.Concat(array.Take(3))
.Concat(array.Skip(7))
.ToArray();
var output = new string(result);
Результат, который я получаю, S6SkE5SGDE
.
Ответ №3:
Разделить на 3:
string str1 = "Fbh3dfbn8";
int partLength = str1.Length / 3;
string result = string.Format("{0}{1}{2}",
str1.Substring(partLength, str1.Length - (2 * partLength)),
str1.Remove(partLength),
str1.Substring(str1.Length - partLength));
Если вы настаиваете на char[]
, достаточно легко получить string
из char[]
через конструктор или обратно в char[]
через string.ToCharArray
.