Java扫描定界符-从单个字符串中提取多个子字符串
我几乎搜索了Stackoverflow上的所有页面,但仍然没有找到如何做到这一点。我有以下字符串(正在从文件中解析): 现在,我想再次解析这个字符串并提取字符串Java扫描定界符-从单个字符串中提取多个子字符串,java,string,io,split,Java,String,Io,Split,我几乎搜索了Stackoverflow上的所有页面,但仍然没有找到如何做到这一点。我有以下字符串(正在从文件中解析): 现在,我想再次解析这个字符串并提取字符串matchQuan,slurpee,字符串Unique和FoodType和Recipe以及ID号,即xxx xxx eee ddd 我如何从一个字符串中多次提取这样的内容?我不能使用Scanner.next()我不相信,因为它会前进到字符串中的下一个标记 谢谢 这对你有帮助吗 public static void getString()
matchQuan
,slurpee
,字符串Unique
和FoodType
和Recipe
以及ID号,即xxx xxx eee ddd
我如何从一个字符串中多次提取这样的内容?我不能使用Scanner.next()我不相信,因为它会前进到字符串中的下一个标记
谢谢 这对你有帮助吗
public static void getString() {
String str = "f: (matchQuan " +
"(Recipe "+
"(Unique FoodType" + " slurpee"+ " xxx-xxx-eee-ddd"+
"(Unique IngredType"+ " slurpee"+ " qqq-rrr-sss"+" slurpee" +
" (Cup - Vol 12)).";
String newStr=str.replaceAll("\\(","").replaceAll("\\)","");
String[] arrStr=newStr.split(" ");
for (int i=0;i<arrStr.length;i++){
System.out.println(arrStr[i]);
}
}
publicstaticvoid getString(){
String str=“f:(matchQuan”+
“(配方”+
“(唯一食物类型“+”slurpee“+”xxx xxx eee ddd”+
“(唯一IngredType”+“slurpee”+“qqq rrr sss”+“slurpee”+
“(世界杯-第12卷”);
字符串newStr=str.replaceAll(“\\(“,”).replaceAll(“\\)”,”);
字符串[]arrStr=newStr.split(“”);
对于(int i=0;i提取是什么意思?您想要子字符串吗?您可以使用Scanner.next()
迭代字符串标记并将其存储在类似列表的容器中,如果格式没有更改,您可以通过执行List.get(0).get(0)来获取matchQuan
。你知道我要说什么吗?是的,很抱歉不清楚。我要从这个字符串中生成多个单独的子字符串。@Adrian在第一个引号中(即slurpee)无法保证它总是一个单词。因此,简单地使用。next
并不总能产生我想要的结果。我该如何处理这个问题?@RichieEpiscopo我想你不明白我之前说的话。你应该将数据存储在某种类型的列表中,而不要使用。next()
一直都是。或者试着做一个小的DFA来解析你的输入。告诉我你是否在寻找一个不同的东西。我这样得到了你的问题哦,这真的让我对拆分()大开眼界了
method——我以前不知道有这个方法。我将在我的实现中使用它。一个问题:为什么需要这一行:newStr=str.replaceAll(“\\(”,”).replaceAll(“\\”,”);
?删除()brackets@RichieEpiscopo这就是你想要的答案吗?
public static void getString() {
String str = "f: (matchQuan " +
"(Recipe "+
"(Unique FoodType" + " slurpee"+ " xxx-xxx-eee-ddd"+
"(Unique IngredType"+ " slurpee"+ " qqq-rrr-sss"+" slurpee" +
" (Cup - Vol 12)).";
String newStr=str.replaceAll("\\(","").replaceAll("\\)","");
String[] arrStr=newStr.split(" ");
for (int i=0;i<arrStr.length;i++){
System.out.println(arrStr[i]);
}
}