0

「23+43*435/675-23」という文字列があります。どうすれば分割できますか?私が望む最後の結果は次のとおりです。

String 1st=23
String 2nd=435
String 3rd=675
String 4th=23

私はすでにこの方法を使用しました:

String s = "hello+pLus-minuss*multi/divide";
String[] split = s.split("\\+");
String[] split1 = s.split("\\-");
String[] split2 = s.split("\\*");
String[] split3 = s.split("\\/");
String plus = split[1];
String minus = split1[1];
String multi = split2[1];
String div = split3[1];
System.out.println(plus+"\n"+minus+"\n"+multi+"\n"+div+"\n");

しかし、それは私にこの結果を与えます:

pLus-minuss*multi/divide
minuss*multi/divide
multi/divide
divide

しかし、この形式で結果が必要です

pLus
minuss
multi
divide
4

4 に答える 4

2

これを試して:

public static void main(String[] args) {
    String s ="23+43*435/675-23";
    String[] ss = s.split("[-+*/]");
    for(String str: ss)
        System.out.println(str);

}

出力:

23
43
435
675
23

変数に保存してから印刷する理由がわかりません。とにかく以下のコードを試してください:

public static void main(String[] args) {
    String s = "hello+pLus-minuss*multi/divide";
    String[] ss = s.split("[-+*/]");
    String first =ss[1];
    String second =ss[2];
    String third =ss[3];
    String forth =ss[4];

    System.out.println(first+"\n"+second+"\n"+third+"\n"+forth+"\n");

    }

出力:

pLus
minuss
multi
divide
于 2013-03-23T11:17:56.233 に答える
1

これを試してください:

        String data = "23+43*435/675-23";
    Pattern pattern = Pattern.compile("[^\\+\\*\\/\\-]+");

    Matcher matcher = pattern.matcher(data);

    List<String> list = new ArrayList<String>();
    while (matcher.find()) {
        list.add(matcher.group());
    }

    for (int index = 0; index < list.size(); index++) {
        System.out.println(index + " : " + list.get(index));
    }

出力:

0:23

1:43

2:435

3:675

4:23

于 2013-03-23T11:19:56.707 に答える
0

演算子の順序が重要な場合は、コードを次のように変更します。

    String s = "hello+pLus-minuss*multi/divide";
    String[] split = s.split("\\+");
    String[] split1 = split[1].split("\\-");
    String[] split2 = split1[1].split("\\*");
    String[] split3 = split2[1].split("\\/");
    String plus = split1[0];
    String minus = split2[0];
    String multi = split3[0];
    String div = split3[1];
    System.out.println(plus + "\n" + minus + "\n" + multi + "\n" + div + "\n");

それ以外の場合、任意の演算子に吐き出し、変数に保存するには、次のようにします。

public static void main(String[] args) {
    String s = "hello+pLus-minuss*multi/divide";

    String[] ss = s.split("[-+*/]");
    String plus = ss[1];
    String minus = ss[2];
    String multi = ss[3];
    String div = ss[4];
    System.out.println(plus + "\n" + minus + "\n" + multi + "\n" + div + "\n");
}
于 2013-03-23T11:57:55.820 に答える
0

インデックスの問題だけだと思います。分割結果を取得するには、インデックス 0 を使用する必要がありました。

String[] split = s.split("\\+");
String[] split1 = split .split("\\-");
String[] split2 = split1 .split("\\*");
String[] split3 = split2 .split("\\/");

String hello= split[0];//split[0]=hello,split[1]=pLus-minuss*multi/divide

String plus= split1[0];//split1[0]=plus,split1[1]=minuss*multi/divide
String minus= split2[0];//split2[0]=minuss,split2[1]=multi/divide
String multi= split3[0];//split3[0]=multi,split3[1]=divide

String div= split3[1];
于 2013-03-23T11:39:27.317 に答える