2013-11-14 9 views
1

Вот моя проблема: я читаю из строки строки за строкой, а затем хочу проверить, содержит ли эта строка строку, поэтому я использую String.contains, но всегда возвращает false. Я также попытался разбить строку ввода (и затем использовать String.contains или String.equals), так как проверяемое слово является первым из строки. Строка, которую я хочу проверить, и делает расщепление, я заметил, что даже когда строка содержит его, я получаю false. Странный факт: строка напечатана правильно, но ее длина больше, чем строка (даже если я использовал замену, чтобы убедиться, что не было пробелов), и я думаю, что это моя проблема. Я думаю, что это зависит от кодировки файла, но если это так, есть ли какое-либо решение? Файл является выходом другой программы (Praat), поэтому я не могу сохранить его по-другому.String.contains() при чтении из файла

line = inFile2.nextLine(); 
String[] W = line.split("[\t\\s]"); 
String checking = W[0]; 
checking.replace(" ",""); 
checking.replace("/t",""); 
String st ="<now>"; 
System.out.println(!checking.equals(st)); //returns always true 
System.out.println(st.length()); //returns 5 
System.out.println(checking.length()); //returns 11 
System.out.println(checking); //it prints <now> correctly 

строка на входе, как: <now> 236 62 elena information-relation

+5

Пожалуйста, соблюдайте соглашения об именах. –

+2

Пожалуйста, отформатируйте свой пост. Эта стена текста вряд ли читаема. – user1567896

ответ

0

Я решил повторно сохранить текстовый файл, используя кодировку UTF-8.

7

Строки immutable:

Note: Класс Строка неизменна, так что, как только он будет создан объект Строка не может быть изменен. Класс String имеет ряд методов , некоторые из которых будут рассмотрены ниже, которые, как представляется, изменяют строки . Поскольку строки являются неизменными, то, что эти методы действительно делают, это создать и вернуть новую строку, которая содержит результат операции .

Так оно и должно быть:

Checking = Checking.replace(" ",""); 
Checking = Checking.replace("/t",""); 

Или еще лучше (method chaining):

Checking = Checking.replace(" ","").replace("/t",""); 

Также, пожалуйста, уважайте naming conventions.

+1

Спасибо за ответ, но ничего не изменилось –

+0

@checcohotantasete Работа здесь: http://ideone.com/JqvGr2 –

0

Строка неизменна, поэтому вам необходимо назначить.

Checking = Checking.replace(" ",""); 
Checking = Checking.replace("/t",""); 
0

Чтобы сделать его короче, вы можете также сделать это:

String Checking = W[0].replace(" ", "").replace("/t", ""); 

Конечно, это зависит от ваших предпочтений.

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