Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с Split() 
:(
    Опции темы
alir
Дата 13.10.2005, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 19.3.2005

Репутация: 2
Всего: 4



Код

string str1;
string[] strMas = new string[3];
str1 = reader2.ReadToEnd();
strMas = str1.Split();


В файле:

Код

123
56
7


Результат присвоения к strMas:

[0] = 123
[1] = ""
[2] = 56
[3] = ""
[4] = 7

как видите размерность увеличилась.
Как убрать эти промежуточные символы ""?
Нужно чтобы:

[0] = 123
[1] = 56
[2] = 7
PM MAIL ICQ   Вверх
bend0r
Дата 14.10.2005, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.9.2005

Репутация: 1
Всего: 2



Не когда не пользовался Split() но как я понел можно либо через каждую строчку будет пустая строчка либо все в один элемент масива, хотя хз. Попробуй удалять элементы через один.

Как я понел тебе надо строчки из файла засовывать в массив, можно зделать вот так:

Код

string str;
string[] s = new string[3];
int i =0;
while( (str = streamreader.ReadLine() ) != null)
{
    s[i] = str;
    i++;
    stream.Position ++;
}

PM MAIL   Вверх
-ser-
Дата 14.10.2005, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



alir удивительно как твой код отработал что-то вообще. в качестве аргумента в сплите указываются возможные разделители строки, по которым мы хотим ее разбить. а в твоем случае в 1 и 3-м как раз не пустая строка, а на самом деле символы возврата строки.

Код

            string str1 = null;
            string[] strMas = new string[ 3 ];
            string path = @"c:\FileToRead.txt";
            string[] separator = new string[] { "\r\n" }; // если у нас текстовый файл. я указал просто 
                                               // перевод каретки и возврат строки. 
                                               // можно добавить любые отделяющие строку символы
            try
            {
                using( StreamReader sr = new StreamReader( path ) )
                {
                    str1 = sr.ReadToEnd();
                }
            }
            catch( Exception e )
            {
                Console.WriteLine( "The process failed: {0}", e.ToString() );
            }

            strMas = str1.Split( separator, StringSplitOptions.RemoveEmptyEntries );

            foreach( string s in strMas )
            {
                Console.WriteLine( s );
            }




--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
alir
Дата 14.10.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 19.3.2005

Репутация: 2
Всего: 4



-ser-
Еще бы ты мне сказал в како сборке находится StringSplitOptions.RemoveEmptyEntries.
Притом строка
Цитата

strMas = str1.Split( separator, StringSplitOptions.RemoveEmptyEntries );

не сработает: cannot convert from 'string' to 'char[]'
Это ошибка возникает при вставке любого параметра, а без них срабатывает, но с неудовлетворительным результатом.

Это сообщение отредактировал(а) alir - 14.10.2005, 14:56
PM MAIL ICQ   Вверх
alir
Дата 14.10.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 19.3.2005

Репутация: 2
Всего: 4



bend0r
Код тоже не рабочий:
откуда ты вообще взял
Цитата
stream.Position ++;

???
Добавлено @ 15:10
О! Дошло наконец. Вот как правильно будет работать:
Код

string[] strMas = new string[i];
string str;    
int j =0;

while(reader2.Peek() >= 0)    
{    
    str = reader2.ReadLine();
    strMas[j] = str;
    j++;
}

PM MAIL ICQ   Вверх
bend0r
Дата 14.10.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.9.2005

Репутация: 1
Всего: 2



Цитата(alir @ 14.10.2005, 15:03)
bend0r
Код тоже не рабочий:
откуда ты вообще взял
Цитата
stream.Position ++;

???


у меня все работает, вот полный код:
Код


FileStream stream = new FileStream("File.txt", FileMode.OpenOrCreate);
StreamReader streamreader = new StreamReader(stream);

string str;
string[] s = new string[3];
int i =0;
while((str = streamreader.ReadLine()) != null)
    {
        Console.WriteLine(str);
        s[i] = str;
        i++;
        stream.Position ++;
    }



хотя и без
Код
stream.Position ++; 
работает smile
я из своего кода выдернул там немного другие задачи.


PM MAIL   Вверх
-ser-
Дата 15.10.2005, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



alir
Цитата
Еще бы ты мне сказал в како сборке находится StringSplitOptions.RemoveEmptyEntries.

извиняюсь, не посмотрел. это в НЕТ2.0.
в противном случае вместо этого в качестве второго аргумента можно написать true, что означает omitEmptyEntries. будет работать аналогично. хотя, насколько я понимаю, у тебя пустых строк в файле нет, так что можно указать и false, те же яйца. посмотри документацию String.Split. Там вроде все просто.


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.