【发布时间】:2011-12-05 13:28:24
【问题描述】:
我只是想问是否有一种简单的方法可以从 java 中的字符串数组中提取字符串。 例如,如果我有输入:
String searchtext = "The one thing";
String source = "the one Thing in life is to not do in java";
String annote = "det num nn pp nn cop to neg vv pp nn";
我想要输出(我不想使用正则表达式,因为我的搜索文本会有所不同)
det num nn
这段代码能用吗????
String searchtext = "The one thing";
String source = "the one Thing in life is to not do in java";
String annote = "det num nn pp nn cop to neg vv pp nn";
String[] annotelist = annote.split(" ");
List<String> sourcelist = Array.asList(sourcetext.split(" "));
search_startpt = searchlist.indexof(search[0]);
String[] searchannote = annotelist[search_startpt];
for (int j=1; j<sourcelist.length(); j++)
searchanote[j] = annotelist[sear_startpt+j];
System.out.println(StringUtils.join(searchannoate, " "));
原来,我试过下面的代码:
import org.apache.commons.lang.StringUtils;
String searchtext = "The one thing";
String[] search = searchtext.split(" ");
String source = "the one Thing in life is to not do in java";
String[] sourcelist = source.split(" ");
String annote = "det num nn pp nn cop to neg vv pp nn";
String[] annotelist = annote.split(" ");
int search_startpt = 0;
for (int i=0; i<sourcelist.length(); i++) {
if (sourcelist[i].equalsIgnoreCase(search[0])) {
for (int j=1; j<search.length(); j++) {
if (sourcelist[i+j].equalsIgnoreCase(search[j]) ==0) break;
if (sourcelist[i+search.length()].equalsIgnoreCase(search[search.length()-1])) search_startpt = i;
}
}
}
String[] searchannote = annotelist[search_startpt];
for (int j=1; j<sourcelist.length(); j++)
searchanote[j] = annotelist[sear_startpt+j];
System.out.println(StringUtils.join(searchannoate, " "));
【问题讨论】:
-
感谢 Gray,String.indexof(X) 可以找到 searchtext char 位置,但不能找到结果 searchannoate。
-
对,对不起,没有解析完整的问题。 @solendil 的答案是正确的。
标签: java string search text arrays