Удалить среднюю подстроку из строки в C#

#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 .