Java 如何使用useDelimiter()一次?

Java 如何使用useDelimiter()一次?,java,Java,例如,我有这个代码 String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("fish"); 输出: 1 2 red blue 预期产出: 1 2 fish red fish blue fish 使用相同的useDelimiter而不中断可以先消除第一个匹配项,然后按空格分割(如果需要),然后进行分割 String input = "1 fish

例如,我有这个代码

 String input = "1 fish 2 fish red fish blue fish";  
 Scanner s = new Scanner(input).useDelimiter("fish");
输出:

1 
2
red
blue
预期产出:

1 
2
fish
red
fish
blue
fish

使用相同的useDelimiter而不中断

可以先消除第一个匹配项,然后按空格分割(如果需要),然后进行分割

String input = "1 fish 2 fish red fish blue fish"; 
Scanner s = new Scanner(input.replaceFirst(" fish", "")).useDelimiter(" ");

我在上的另一个问题中找到了replaceFirst,因此您可以先消除第一次出现的问题,然后根据需要按空格分割,然后进行分割

String input = "1 fish 2 fish red fish blue fish"; 
Scanner s = new Scanner(input.replaceFirst(" fish", "")).useDelimiter(" ");

我在上的另一个问题中找到了replaceFirst,所以在前2次使用后,您可以通过
s.usedimiter(“”)重置分隔符

String input = "1 fish 2 fish red fish blue fish"; 
Scanner s = new Scanner(input).useDelimiter("\\bfish\\b");

System.out.println(s.next()); // first use
System.out.println(s.next()); // second use
s.useDelimiter(" ");          // setting delimiter to <space>
// print the rest 
String input=“1鱼2鱼红鱼蓝鱼”;
扫描仪s=新扫描仪(输入)。使用分隔符(\\bfish\\b”);
System.out.println(s.next());//首次使用
System.out.println(s.next());//第二次使用
s、 使用分隔符(“”;//将分隔符设置为
//打印其余的

您可以在前2次使用后通过
s.useDelimiter(“”
重置分隔符

String input = "1 fish 2 fish red fish blue fish"; 
Scanner s = new Scanner(input).useDelimiter("\\bfish\\b");

System.out.println(s.next()); // first use
System.out.println(s.next()); // second use
s.useDelimiter(" ");          // setting delimiter to <space>
// print the rest 
String input=“1鱼2鱼红鱼蓝鱼”;
扫描仪s=新扫描仪(输入)。使用分隔符(\\bfish\\b”);
System.out.println(s.next());//首次使用
System.out.println(s.next());//第二次使用
s、 使用分隔符(“”;//将分隔符设置为
//打印其余的

如果delimier是“鱼”,您将进行双重读取

输出

1 
2 
fish
red
fish
blue
fish
作为对你评论的回答。
在这种情况下,我认为最好使用
String::split
,如果结果数组中的字符串以fish开头,则将其丢弃/忽略

String input = "1 2 3 fish1 1 2 3 fish2 1 2 3 fish3 1 2 3 fish1 1 2 3 fish2 1 2 3";
String [] arr = inpit.split (" ");

for (String el : arr) {
    if (el.startsWith("fish")) continue;
    System.out.println (el);
} 

如果熟食者是“鱼”,你要仔细阅读

输出

1 
2 
fish
red
fish
blue
fish
作为对你评论的回答。
在这种情况下,我认为最好使用
String::split
,如果结果数组中的字符串以fish开头,则将其丢弃/忽略

String input = "1 2 3 fish1 1 2 3 fish2 1 2 3 fish3 1 2 3 fish1 1 2 3 fish2 1 2 3";
String [] arr = inpit.split (" ");

for (String el : arr) {
    if (el.startsWith("fish")) continue;
    System.out.println (el);
} 


您的代码没有输出任何内容,但显然您只需在读取所需数据量后更改分隔符。您的代码没有输出任何内容,但显然您只需在读取所需数据量后更改分隔符。问题是如何使用useDelimiter()一次?问题是如何使用useDelimiter()一次?问题是如何使用useDelimiter()一次?而OP可能不知道他可以使用replaceFirst,那么如果可以更简单更好的话,你为什么会给出更差的答案?如果你不确定为什么不给他一条评论,询问更多信息,或许OP需要像他描述的那样使用它。在我看来,我只需要拆分字符串,如果
arr[1]
“fish”
,那么就把它扔掉,但这不是OP要求的。我没有50个代表,所以我不能给他一个评论。否则我会这么做,这是我的错,因为我在回答中没有提到。好吧,你可以对冲你的赌注,把这两个想法都放到你的答案中。问题是如何使用useDelimiter()一次?OP可能不知道他可以先使用replaceFirst,那么,如果答案更简单、更好,你为什么会给出更差的答案呢?如果你不确定为什么不给他留言,要求他提供更多信息,也许OP需要使用他描述的答案。在我看来,我只需要拆分字符串,如果
arr[1]
“fish”
,那么就把它扔掉,但这不是OP要求的。我没有50个代表,所以我不能给他一个评论。否则我会这么做,这是我的错,因为我在回答中没有提到。你可以对冲你的赌注,把这两个想法都放在你的回答中。对不起,我没有注意到
//第一次使用
,我发现第二个元素是
“2”
,所以我使用了
“鱼”
由于delimeterSorry没有注意到
//第一次使用
我发现第二个元素是
“2”
,所以我使用
“fish”
作为Delimeter如果初始字符串是这样的呢?字符串输入=“1 2 3鱼1 2 3鱼2 1 2 3鱼3 1 2 3鱼1 1 2 3鱼2 1 2 3……”;我想将数据存储在所有fish字符串之间,例如,我想将1233存储为fish1和fish2之间的字符串。我可以使用useDelimiter()实现这一点。当我第二次尝试为fish1使用usedelimiter时,数据没有被读取。这是我的主要关注点。在这种情况下,我认为最好使用
String::split
如果结果数组中的字符串以
fish
开头,则将其丢弃/忽略。查看我编辑的答案如果初始字符串是这样的呢?字符串输入=“1 2 3鱼1 2 3鱼2 1 2 3鱼3 1 2 3鱼1 1 2 3鱼2 1 2 3……”;我想将数据存储在所有fish字符串之间,例如,我想将1233存储为fish1和fish2之间的字符串。我可以使用useDelimiter()实现这一点。当我第二次尝试为fish1使用usedelimiter时,数据没有被读取。这是我的主要关注点。在这种情况下,我认为最好使用
String::split
如果结果数组中的字符串以
fish
开头,则将其丢弃/忽略。见我编辑的答案