我想保留句子中的前两个单词和最后一个单词,包括句子末尾的问号。
wie ging er ook alweer allemaal mee wat drinken in Utrecht?
应该变成
当句子长达3个单词时,它也应该有用。 所以
wt ging Utrecht?
应该保持不变
无论我尝试什么,我都会找到几封信或什么都没有,有人可以伸出援助之手吗? 我有一本关于正则表达的好书但是我没有时间直到夏天:(
答案 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
答案 1 :(得分:2)
这不适合使用正则表达式。
在Java中执行此操作的正确方法是使用BreakIterator
检测“Words”并根据您的逻辑处理它们。只是拆分一个字符在所有语言中都可能在语义上不正确。
打印第一个元素:
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));
}
答案 2 :(得分:1)
答案 3 :(得分:0)
只需在空格上拆分并取前两个/最后一个,根据需要从前两个单词中删除标点符号,并确保长度。没有必要使用正则表达式。