2013-11-01 5 views
1

У меня возникла проблема с функцией split в java. Я читаю список строк из файла и сохраняю их на два массива. Каждая строка содержит букву + пробел + номер. Я использовал функцию split, чтобы получать буквы в одном из arraylist и числах в другом arraylist. Числа arraylist добавляет числа правильно, но буквы arraylist добавляет письмо, за которым следуют пробелы, но я не знаю почему?!Функция разделения увеличивает новый пробел после разделения строки

Вот файл:

a 1 
b 01 
c 001 
d 000 

код:

Scanner s = new Scanner(new File("ListOfCodes.txt.txt")); 
String output=""; 
ArrayList<String> Codes = new ArrayList<String>(); 
ArrayList<String>Letters = new ArrayList<String>(); 
String []separated ; 
    while(s.hasNextLine()) 
    { 
     output=s.nextLine(); 
      separated = output.split(" "); 
      for(int k=0;k<separated.length;k++) 
      { 
       if(k==0) 
      Letters.add(separated[k]); 
       if(k==1) 
       Codes.add(separated[k]); 

      } 
      output=""; 
    } 
     output=""; 




     for(int i=0;i<Letters.size();i++) 
     System.out.println(Letters.get(i)); 

     for(int i=0;i<Codes.size();i++) 
      System.out.println(Codes.get(i)); 

Выход для кодов ArrayList:

1 
01 
001 
000 

Выход для Letters ArrayList:

a 

b 

c 

d 
+0

Возможно ли, что перед или после пробела появляются новые строковые символы, такие как '\ r' или' \ n'? Если это возможно, попробуйте использовать 'split (" \\ s + ")'? – Pshemo

+0

Я пробовал, но это не сработало:/ – SUE

+0

Тогда я не могу воспроизвести вашу проблему. Я подозреваю, что любой код, который вы используете, отличается или формат входного файла не так, как вы нам показываете. – Pshemo

ответ

2

В вашем файле могут быть пробелы. Поэтому лучше использовать метод trim, прежде чем хранить их в списке.

+0

конечное пространство или '\ r'' \ n' символы –

+0

Да, на основании его редактирования ясно, что он получает символ конца строки. Trim решит эту проблему. –

+0

Метод 'trim()' также не работает – SUE

0

Я предложил бы использовать раскол, как это:

separated = output.split("\\s+"); // \\s matches white spaces including newlines as well 

Это даст вам массив строки с полосатыми новыми линиями в конце.

Смежные вопросы