2012-03-21 2 views
0

Я хочу сохранить первые 2 слова и последнее слово из предложения, включая знак вопроса в конце предложения.сохранить первые 2 слова и последнее слово из предложения

wie ging er ook alweer allemaal mee wat drinken in Utrecht?

должен превратиться в

Он также должен работать, когда предложение длиной 3 слова. So

wie ging Utrecht?

должна оставаться такой же

Независимо от того, что я стараюсь, я найти несколько букв или ничего, не может кто-то протянуть руку помощи? У меня есть хорошая книга о регулярном выражении, но у меня нет времени до лета :(

+1

Почему бы не показать нам, что вы пробовали? :) –

+1

Определите слово и предложение. –

+1

, это ** не ** что-то, что подходит регулярному выражению, регулярные методы манипулирования строками помогут вам получить гораздо лучшие результаты. –

ответ

2

Это не является подходящим местом для использования регулярных выражений.

Правильный способ сделать это в Java - использовать BreakIterator для обнаружения «слов» и обработки их в соответствии с вашей логикой. Просто разделение на символ может быть не семантически правильным на всех языках.

печати Первый элемент:

public static void printFirst(BreakIterator boundary, String source) { 
    int start = boundary.first(); 
    int end = boundary.next(); 
    System.out.println(source.substring(start,end)); 
} 

печати последний элемент:

public static void printLast(BreakIterator boundary, String source) { 
    int end = boundary.last(); 
    int start = boundary.previous(); 
    System.out.println(source.substring(start,end)); 
} 

печати элемент в указанной позиции:

public static void printAt(BreakIterator boundary, int pos, String source) { 
    int end = boundary.following(pos); 
    int start = boundary.previous(); 
    System.out.println(source.substring(start,end)); 
} 
+0

прохладный действительно pro. Я должен помнить об этом для будущих проектов :) Я создаю textAnalyser один раз, и это должно быть хорошо в нем. О, да, BreakIterator использует регулярное выражение, и если нет, что делает его таким хорошим? – clankill3r

+0

Я бы сказал, посмотрите на источник, как он работает, но он больше знает язык и юникод, чем «немое» регулярное выражение. –

0

Просто поделитесь местами и возьмите первые два/последние, сняв пунктуацию по мере необходимости с первых двух слов и убедившись, что длина. нет смысла использовать регулярные выражения.

4

Попробуйте это ... использует String.split()

String s = "wie ging er ook alweer allemaal mee wat drinken in Utrecht?"; 
String words[] = s.split(" "); 
String firstTwo = words[0] + " " + words[1]; // first two words 
String lastOne = words[words.length - 1]; // last one 
+0

классный спасибо мужчина. – clankill3r

1

Регулярное выражение Раствор

^((?:\w+\s+){2}).*?(\S+)$ 

и заменить $1$2

Посмотреть here on Regexr

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