使用Scanner分隔字符串

时间:2017-12-11 08:04:10

标签: java string java.util.scanner

我试图将数字(包括Double)与诸如" 4 + 5 *(4.5 + 6)"之类的字符串分开。 我想过使用扫描仪将数字与我的字符串分开。我想听听是否有更好的方法,并且知道如何使用扫描仪进行操作? 这是我的代码,只是想检查它是否有效并且它引发了异常......

package testzehavit;

import java.util.Scanner;

public class main {

    public static void main(String[] args) {
        Scanner s= new Scanner("443+54+24");
        s.useDelimiter("+");
        System.out.println(s.next());

    }

}

谢谢

4 个答案:

答案 0 :(得分:1)

扫描仪分隔符是正则表达式。在正则表达式中使用符号“+”表示“一次或多次”。

您想要做的是:

public static void main(String[] args) {
    Scanner s= new Scanner("443+54+24");
    s.useDelimiter("\\+");
    System.out.println(s.next());

}

答案 1 :(得分:1)

来自this question/answer你必须逃避+,因为该方法采用正则表达式而不是文字字符串。在Java中,您使用双反斜杠\\进行转义。这段代码:

public static void main(String[] args) {
    Scanner s = new Scanner("443+54+24");
    s.useDelimiter("\\+");
    System.out.println(s.next());
}

打印443

答案 2 :(得分:0)

使用String.contains();方法。 你可以放一个表示数字和操作数范围的正则表达式,或者做一个简单的for循环,并将每次迭代解析为String,将它作为一个argurment传递给contains方法。

很抱歉没有展示任何代码,但我在手机上。 Google String.contains()和正则表达式。你应该能够将两者结合起来。

答案 3 :(得分:0)

public static void main(String [] args){

Scanner s = new Scanner("443+54+24");

s.useDelimiter("\\+");

System.out.println(s.next());

}