【发布时间】:2015-02-09 10:02:54
【问题描述】:
我有Set 的character 分隔符(DELIMITERS),例如. , 等。使用它我想拆分文本并获取带有它们在文本中的位置的单词。
如果您只想要文字,String.split() 可以正常工作。与StringTokenizer 相同。写了一些简单的方法来解决这个问题,但也许有更好的方法来实现这个结果?
public List<String> extractWords(String text){
List<String> words = new ArrayList<>();
List<WordPos> positions = new ArrayList<>();
int wordStart = -1;
for(int i=0; i < text.length(); i++){
if(DELIMITERS.contains(text.charAt(i))){
if(wordStart >=0){ //word just ended
String word = text.substring(wordStart, i);
positions.add(new WordPos(wordStart, i));
words.add(word);
}
wordStart = -1;
}else{ //not delimiter == valid word
if(wordStart < 0){ //word just started
wordStart = i;
}
}
}
return words;
}
// inner static class for words positions
public static class WordPos{
int start;
int end;
public WordPos(int start, int end){
this.start = start;
this.end = end;
}
}
【问题讨论】:
-
我觉得你应该把这个发到codereview.stackexchange.com
标签: java string tokenize string-split