2013-03-20 4 views
1

Я разбираю PDF и получаю много строк с \t, \r, \n,\s ... И они появляются на обоих концах строки и не отображаются в порядке. Таким образом, я могу иметь
Ex:

«\t\s\t\n Некоторые важные данные мне нужно в окружении бесполезных данных \r\t\s\s\r\t\t»

. Есть ли эффективные способы обрезать эти строки? То, что я до сих пор, не достаточно хорошо, потому что я хочу некоторые символы .:обрезать все пробелы из строки

public static String trimToLetters(String sourceString) { 
     int beginIndex = 0; 
     int endIndex = sourceString.length() - 1; 
     Pattern p = Pattern.compile("[A-Z_a-z\\;\\.\\(\\)\\*\\?\\:\\\"\\']"); 
     Matcher matcher = p.matcher(sourceString); 
     if (matcher.find()) { 
      if (matcher.start() >= 0) { 
       beginIndex = matcher.start(); 
       StringBuilder sb = new StringBuilder(sourceString); 
       String sourceReverse = sb.reverse().toString(); 
       matcher = p.matcher(sourceReverse); 
       if (matcher.find()) { 
        endIndex = sourceString.length() - matcher.start(); 
       } 
      } 
     } 
     return sourceString.substring(beginIndex, endIndex); 
    } 
+0

Вы бы сделали хуже, чем вызывать 'stringInstance.replaceAll (" [[: space:]] "," ")' – hd1

ответ

6

Способ по Stringtrim должен быть в состоянии удалить все пробелы с обоих концов строки:

trim: Возвращает копию строки с опущенными пробелами в начале и конце.

P.S. \s не является допустимой escape-последовательностью в Java.

+0

Это первое, что я пробовал. Или, может быть, в pdf-файлах содержатся буквы, которые не могут быть переданы в .txt-файл. – wtsang02

+3

@ wtsang02 Вот рабочая демонстрация на идеоне: [link] (http://ideone.com/vhvDp6). – dasblinkenlight

+2

@ wtsang02 В чем проблема, с которой вы сталкиваетесь с методом «обрезки»? – Jayamohan

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