Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 29.03.2018
Сообщений: 15
1

Удалить лишние пробелы в массиве char

18.11.2018, 23:41. Показов 4146. Ответов 6

Author24 — интернет-сервис помощи студентам
Добрый вечер. Помогите, пожалуйста, отредактировать предложение, удаляя из него лишние пробелы, оставляя по одному пробелу между словами. Убирая лишний пробел перед знаками препинания. Работать обязательно с чаровским массивом и на выходе тоже получить его. У меня получилось убрать сразу все пробелы, а по заданию нет. Сделать надо через Linq.

C#
1
2
3
4
5
6
7
8
Console.WriteLine("Введите символьную строку");
            string s = Console.ReadLine();
            char[] text = s.ToCharArray();
 
            char[] text = (s.ToCharArray()
                            .Where(c => !Char.IsWhiteSpace(c))
                            .ToArray());
            Array.ForEach(text, x => Console.Write(x));
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2018, 23:41
Ответы с готовыми решениями:

Удалить лишние пробелы
Здравствуйте! Нужна помощь!!! Помогите, пожалуйста, подправить код. Задание : Написать программу...

Удалить лишние пробелы в строке
Задача поставлена примерно так: если перед строкой (там может быть и 1 и больше слов) и после нее...

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

Как удалить лишние пробелы в строке?
Как удалить лишние пробелы в строке? СРОЧНО, пробелы надо удалить не вначале и в конце, а между...

6
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
19.11.2018, 08:41 2
Лучший ответ Сообщение было отмечено lercha33444 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static public void Main(string[] args)
{
    Console.WriteLine("Введите символьную строку");
 
    string s = Console.ReadLine();
 
    char[] text = s.ToCharArray();
 
    text = text.Where((c, i) => !(char.IsWhiteSpace(c) && char.IsWhiteSpace(text.ElementAtOrDefault(++i)))).ToArray();
 
    text = text.Where((c, i) => !(char.IsWhiteSpace(c) && char.IsPunctuation(text.ElementAtOrDefault(++i)))).ToArray();
 
    Console.WriteLine(new string(text));
}
1
0 / 0 / 0
Регистрация: 29.03.2018
Сообщений: 15
19.11.2018, 08:53  [ТС] 3
Спасибо
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
19.11.2018, 15:23 4
lercha33444, вариант с одним проходом и без использования замыканий
C#
1
2
3
4
5
6
7
8
string s = "a  b ,c";
char[] charArray = s.Trim().ToCharArray();
charArray = charArray.Skip(1).Aggregate(s.Substring(0,1), (str, ch) => {
    if (char.IsWhiteSpace(ch) && char.IsWhiteSpace(str[str.Length-1])) { }
    else if (char.IsPunctuation(ch)) str = str.Trim() + ch;
    else str += ch;
    return str;
}).ToCharArray();
0
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,532
Записей в блоге: 2
19.11.2018, 17:04 5
Цитата Сообщение от OwenGlendower Посмотреть сообщение
вариант с одним проходом и без использования замыканий
А вот так - не тоже самое?
C#
1
2
3
4
5
6
string s = "a  b ,c";
char[] charArray = s.Trim().ToCharArray();
charArray = charArray.Skip(1).Aggregate(s.Substring(0,1), (str, ch) => {
    if (char.IsWhiteSpace(ch) || char.IsPunctuation(ch)) str = str.Trim();
    return str+ch;
}).ToCharArray();
Добавлено через 3 минуты
Даже так
C#
3
4
5
charArray = charArray.Skip(1).Aggregate(s.Substring(0,1), (str, ch) => 
    ((char.IsWhiteSpace(ch) || char.IsPunctuation(ch)) ? str.Trim() : str) + ch)
     .ToCharArray();
1
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
19.11.2018, 17:08 6
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А вот так - не тоже самое?
Тоже самое, но короче
0
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,532
Записей в блоге: 2
19.11.2018, 17:11 7
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Тоже самое, но короче
0
19.11.2018, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2018, 17:11
Помогаю со студенческими работами здесь

Удалить все лишние пробелы в строке
Всем привет. Нужна ваша помощь. Задание:Нужно удалить в строке все лишние пробелы, то есть серии...

Удалить из файла все однобуквенные слова и лишние пробелы
Дан символьный файл f. Группы символов, разделенные пробелами (одним или несколькими) и не...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru