Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 12.06.2016
Сообщений: 43
1

Удаление пробелов в строке

08.11.2016, 07:54. Показов 5755. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста, как исправить: Индекс находился вне границ массива
вот код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Main()
{
     string s = "lkfj  fgef    efgre erge   g gergerg rf";
     char[] ch = s.ToCharArray();
     int x = 0;
     
     
     for(int i =0; i<ch.Length; i++)
     
     {
     if (s[i] == ' ' && s[i+1] == ' ')
        x++;
        if(i+1 > ch.Length-1) break;
        ch [i+1] = ch [i+2];
        ch[ch.Length-x] = '.';
        ch.Dump();
     }
     
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2016, 07:54
Ответы с готовыми решениями:

Удаление всех пробелов в строке
Напишите программу на языке C#, удаляющую из строки все пробелы даже если в строке стоят два...

Удаление лишних пробелов в строке
Привет всем! Есть задача, задание такое: &quot;Cоставьте программу, которая будет вводить строку в...

Удаление пробелов
Добрый день! Есть вот такая программка. Уже готова, но почему то не работает ( вот архив Там...

Удаление пробелов из строки
Здравствуйте помогите пожалуйста, у создал поисковик всё хорошо работает но хочу избавится от...

7
7 / 7 / 8
Регистрация: 20.12.2015
Сообщений: 20
08.11.2016, 09:04 2
Если вам нужно только пробелы удалить, не проще сделать так
C#
1
2
3
string s = "lkfj  fgef    efgre erge   g gergerg rf";
s = s.Replace(" ", "");
Console.WriteLine(s);
0
1 / 1 / 0
Регистрация: 12.06.2016
Сообщений: 43
08.11.2016, 09:57  [ТС] 3
нужно лишние пробелы после первого удалить
решение нашел
есть другие варианты?

вот решение
C#
1
2
3
4
while(a.Contains("  "))
              {
                  a = a.Replace("  ", " ");
               }
0
27 / 27 / 16
Регистрация: 22.04.2016
Сообщений: 86
08.11.2016, 10:20 4
Цитата Сообщение от Alexii Посмотреть сообщение
while(a.Contains(" "))
{
a = a.Replace(" ", " ");
}
конкретно этот код ничего не меняет.

C#
1
2
3
4
5
6
7
8
9
10
11
string s = "lkajs    alskd  aksjdj   asdl     aslkdj";
         
            string[] ss = s.Split(' '); //забираем сплитом в новый массив все слова, разделенные пробелом.
            s = ""; //обнуляем строку, так как она у нас в массиве
            foreach (var str in ss)  //для каждой подстроки в массиве
            {
                if (str != "") //если она не пустая (то есть не было 2 пробела подряд)
                    s += str + " "; //перезаписываем в строку эти слова с 1 пробелом, а пустые строки (двойные пробелы) пропускаем
            }                            
            Console.WriteLine(s); //выводим на консольку.
            Console.ReadKey();
2
7 / 7 / 8
Регистрация: 20.12.2015
Сообщений: 20
08.11.2016, 10:25 5
Вот этот код удалит все лишние пробелы кроме первого
C#
1
2
3
4
5
6
      while (s.Contains("  "))
            {
                String replace = s.Replace("  ", " ");
                s = replace;
 
            }
1
Life Builder
529 / 493 / 374
Регистрация: 12.01.2011
Сообщений: 1,739
08.11.2016, 11:05 6
Цитата Сообщение от Alexii Посмотреть сообщение
есть другие варианты?
Еще вариант с регуляркой
C#
1
a = Regex.Replace(a, @"\s+", " ");
или
C#
1
a = string.Join(" ", a.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
0
5864 / 2205 / 653
Регистрация: 11.04.2015
Сообщений: 3,691
Записей в блоге: 43
08.11.2016, 12:22 7
Наиболее простые методы - это сплит-джойн и регуляркой(представлены выше), но если надо конкретно обойти циклом символы и собрать все, что нужно, то можно сделать так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        static string NormalizeSpaces(string str)
        {
            var builder = new StringBuilder();
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] != ' ')
                {
                    builder.Append(str[i]);
                }
                else
                {
                    if (i == str.Length - 1 || str[i + 1] != ' ')
                    {
                        builder.Append(str[i]);
                    }
                }
            }
            return builder.ToString();
        }
Добавлено через 2 минуты
Цитата Сообщение от sk007 Посмотреть сообщение
a = Regex.Replace(a, @"\s+", " ");
\s+ удалит не только пробелы, но и знаки табуляции, возврата каретки и новой строки. Скорее так тогда \ + или так \ {2,}
0
Life Builder
529 / 493 / 374
Регистрация: 12.01.2011
Сообщений: 1,739
08.11.2016, 22:38 8
Цитата Сообщение от diadiavova Посмотреть сообщение
\s+ удалит не только пробелы, но и знаки табуляции, возврата каретки и новой строки. Скорее так тогда \ + или так \ {2,}
согласен
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2016, 22:38

Удаление пробелов в строковом массиве
Проблема: вводится строка содержащая числа и между числами случайное кол-во пробелов, подскажите...

Удаление пробелов и знаков препинания
нужно удалить из текста который будет введен в программу лишние пробелы и знаки препинания....

Удаление повторяющихся пробелов из строки
Вот вопрос : у меня есть строка какая-та и в этой строке есть много пробелов которые каждый что-то...

Удаление пробелов, если их больше одного
Задали написать программу, удаляющую пробелы из строки, если их больше 1(т.е. их может быть 2, 4,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.