Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 424
1

Рассплитить строку, содержащую подряд идущие пробелы

04.03.2014, 19:55. Показов 1289. Ответов 15
Метки нет (Все метки)

Здравствуйте.У меня есть код,который загружает содержимое файла в коллекцию.Код работает, но ошибка возникает в том случае,если перед каждым словом(числом) располагаются 2-3 пробела.Как решить данную проблему?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2014, 19:55
Ответы с готовыми решениями:

Заменить в строке подряд идущие пробелы на один
нужна помощь в написание программы Вводиться строка если в ней 2 и более пробела рядом надо...

Преобразовать все идущие подряд пробелы в один
Дана строка, Вам требуется преобразовать все идущие подряд пробелы в один. Формат входных данных...

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

Строка: Получить новую строку, в котором удалены подряд идущие вхождения слов в предложениях.
Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов запи-саны подряд...

15
Заблокирован
04.03.2014, 20:06 2
Код покажите.
И желательно кинуть файл, который читается неправильно, чтобы мне не писать у себя самому.
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 424
04.03.2014, 22:21  [ТС] 3
Цитата Сообщение от Водяной Змей Посмотреть сообщение
Код покажите.
И желательно кинуть файл, который читается неправильно, чтобы мне не писать у себя самому.
Фрагмент кода:
C#
1
2
3
4
5
6
7
StreamReader f = new StreamReader(name, Encoding.GetEncoding(1251));
                    string s = f.ReadLine();
                    if (s !=  && s != null)
                    {
                        Console.WriteLine(Содержимое файла  + s);
                        Liststring list_s = new Liststring(s.Split());
                        Listint list_i = list_s.ConvertAllint(Convert.ToInt32);
0
Вложения
Тип файла: 7z текст.7z (407 байт, 3 просмотров)
208 / 173 / 48
Регистрация: 20.09.2012
Сообщений: 477
05.03.2014, 00:52 4
Регулярка рулит)
думаю смысл ясен...
если что - пишите=)
C#
1
2
3
4
            
            string text = "  79   17   26   -122   58   -93   13   43   -99   0   -89   111   ";
            string result = System.Text.RegularExpressions.Regex.Replace(text, " +", " ");
            MessageBox.Show(result);
2
Заблокирован
05.03.2014, 02:24 5
Использовать функцию Trim не получается?
0
208 / 173 / 48
Регистрация: 20.09.2012
Сообщений: 477
05.03.2014, 02:27 6
ICanHelpU, код с примером пожалуйста)
0
Заблокирован
05.03.2014, 02:36 7
Как минимум можно не сразу пихать спличеную строку а разобрать ее и "Засунуть" нужные числа
0
208 / 173 / 48
Регистрация: 20.09.2012
Сообщений: 477
05.03.2014, 02:40 8
конечно, можно запихнуть всё в массив char и начинать танцы с бубном, но зачем лишнее телодвижения?
0
0 / 0 / 1
Регистрация: 10.09.2012
Сообщений: 9
05.03.2014, 08:50 9
Trim() тебе действительно поможет, если нужно удалить пробелы только с начала или с конца строки

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.IO;
using System.Text;
 
namespace Tasks
{
    class TrimMethod
    {
        private static void Main()
        {
            string name = "c:\\test.txt";
            StreamReader f = new StreamReader(name, Encoding.GetEncoding(1251));
            string s;
        Console.WriteLine("Выведем содержимое файла без форматирования");
            for (int i = 0; i < 3; i++)
            {
                s = f.ReadLine();
                Console.WriteLine("Начало строки_ {0} _Конец строки", s);
            }
            f.Close();
 
            f = new StreamReader(name, Encoding.GetEncoding(1251));
            Console.WriteLine();
 
        Console.WriteLine("Используем Trim");
            s = f.ReadLine();
            s = s.TrimStart();
            Console.WriteLine("Начало строки_ {0} _Конец строки", s);
 
            s = f.ReadLine();
            s = s.TrimEnd();
            Console.WriteLine("Начало строки_ {0} _Конец строки", s);
 
            s = f.ReadLine();
            s = s.Trim();
            Console.WriteLine("Начало строки_ {0} _Конец строки", s);
            f.Close();
        }
    }
}
Результат:
Рассплитить строку, содержащую подряд идущие пробелы
0
Master of Orion
Эксперт .NET
6082 / 4938 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2014, 11:35 10
pokerface, неправ.
C#
1
 string result = Regex.Replace(text, "\s{2,}", " ");
табы тоже пробелы по факту, но тем кодом не уберутся. Ну и пробелы, которые по 1 смысла трогать нет, по производительности будет печалька.
1
208 / 173 / 48
Регистрация: 20.09.2012
Сообщений: 477
05.03.2014, 11:48 11
Цитата Сообщение от Psilon Посмотреть сообщение
табы тоже пробелы по факту
в примере файла табов нету... так что решаем проблемы по мере поступления)
0
Master of Orion
Эксперт .NET
6082 / 4938 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2014, 11:49 12
pokerface, если замена одного случая на общий решается заменой одного символа на другой, грех не воспользоваться)
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 424
05.03.2014, 18:52  [ТС] 13
Цитата Сообщение от Psilon Посмотреть сообщение
string result = Regex.Replace(text, "\s{2,}", " ");
Не помогло.Ошибка осталась.
0
405 / 357 / 82
Регистрация: 07.10.2009
Сообщений: 558
05.03.2014, 19:20 14
Господа, может я неправильно понял, но по-моему, проблема в пустых вхождениях, которые и отсекаем:
C#
1
Liststring list_s = new Liststring(s.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries));
2
Master of Orion
Эксперт .NET
6082 / 4938 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2014, 20:14 15
Pooh, кстати тоже вариант. Вернее, сразу так надо было делать. Регэкспы более гибкие, но тут лишнего не надо.

ElectronicES, попробуйте сделать, как советует Pooh
0
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 424
05.03.2014, 21:28  [ТС] 16
Всем спасибо.Я разобрался из-за чего ошибка.Теперь Psilon, твой код работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2014, 21:28

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

Заменить в строке пробелы идущие подряд
В заданной строке,заменить парное количество пробелов,которые идут подряд на 'П',а не парное на...

Функция удаляющая из строки подряд идущие пробелы
Опишите функцию, удаляющую из строки ,переданной ей в качестве параметра , все подряд идущие...

Заменить подряд идущие пробелы на один пробел
2) В заданной строке заменить подряд идущие пробелы на один пробел (посредством цикла for).


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

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

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