2012-04-29 2 views
5

От Javadocчтение строки в BufferedReader

public String readLine() 
      throws IOException 

Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed. 

Я следующий вид текста:

Now the earth was formless and empty. Darkness was on the surface 
of the deep. God's Spirit was hovering over the surface 
of the waters. 

Я читаю строки, как:

while(buffer.readline() != null){ 
     } 

Но, проблема его рассматривает строку для строки вверх до новой строки. Но я хотел бы рассмотреть строку, когда строка заканчивается .. Как мне это сделать?

ответ

5

Вы можете прочитать символ в то время, и скопировать данные в StringBuilder

Reader reader = ...; 
StringBuilder sb = new StringBuilder(); 
int ch; 
while((ch = reader.read()) >= 0) { 
    if(ch == '.') break; 
    sb.append((char) ch); 
} 
4
  • используйте устройство java.util.Scanner вместо буферного читателя, и установить ограничитель на "\\." с Scanner.useDelimiter(). (но имейте в виду, что разделителем потребляется, так что вы должны добавить его снова!)
  • или читать сырой строки и разделить его на каждом .
4

Вы можете разделить весь текст, каждый .:

String text = "Your test."; 
String[] lines = text.split("\\."); 

После того, как вы разделите текст, который вы получите массив строк. Вы также можете использовать регулярное выражение, если вам нужно больше контроля, например. для разделения текста также на : или ;. Просто пойдите в Google.

PS .: Может быть, вы должны удалить символы новой строки первого что-то вроде:

text = text.replaceAll("\n", ""); 
7

Вы можете использовать Scanner и установить свой собственный разделитель с помощью useDelimiter(Pattern).

Обратите внимание, что вход разделителем является regex, так что вам нужно будет обеспечить регулярное выражение \. (вам нужно разбить особое значение символа . в регулярном выражении)

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

  • Нет связанных вопросов^_^