0

文字列のコンポーネントを配列に分割して、より簡単にアクセスできるようにしようとしています。

例:4+5=になる必要があり['4','+','5','=']ます。

編集: - 連続した数字を結合する必要があり、空白は無視できます。再度、感謝します!

4

4 に答える 4

2

正規表現ルックアラウンドメカニズムで解決できます。

String str = "10 * 10 - 40 + 100/2 = 110";

//but first lets remove white spaces (it will makes regex easier)
String strWithoutSpaces=str.replaceAll("\\s+", "");

String[] tokens = strWithoutSpaces.split("(?<=[-+*/=])|(?=[-+*/=])");

for (String t:tokens)
    System.out.print(t+",");

出力:

10,*,10,-,40,+,100,/,2,=,110,
于 2012-12-25T20:55:03.110 に答える
2

使用できます

String str = "4+5=";
String[] tokens = str.split("(?!^)");
for (String s : tokens) {
    System.out.println(s);
}

これは出力されます

4  
+  
5  
=
于 2012-12-25T20:24:47.600 に答える
0

toCharArray() メソッドを使用できます

    String s ="4+5=";
    char [] stArr = s.toCharArray();
    for(char ss: stArr){
        System.out.println(ss);
    }

出力

4
+
5
=
于 2012-12-25T20:19:37.027 に答える
0

次のようなことができます。

public static void main(String args[]) {
    String str = "45+5-26";
    String strArr[] = new String[str.length()];
    StringBuffer sb = new StringBuffer();
    int cnt = 0;
    for (int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        if (ch != '\0') {
            if (ch == ' ') {
                continue;
            }
            if (ch >= 48 && ch <= 57) {
                sb.append(ch);
                continue;
            } else {
                strArr[cnt++] = sb.toString();
                sb = new StringBuffer();
                // sb.append(ch);
            }
            strArr[cnt++] = ch + "";
            sb = new StringBuffer();
        }
    }
    strArr[cnt++] = sb.toString();
    sb = new StringBuffer();
    System.out.println("strArray: ");
    for (int i = 0; i < strArr.length; i++) {
        if (strArr[i] == null)
            break;
        System.out.println(strArr[i]);
    }
}

数値間の区切りとして演算子のみを使用すると、文字列トークンを取得するのがより簡単になります。
トークンをコンマで区切る場合は、次のように変更できます。

    for (int i = 0; i < strArr.length; i++) {
        if (strArr[i] == null)
            break;
          //    System.out.println(strArr[i]);
        if(i!=0)
            sbResult.append(",");
        sbResult.append(strArr[i]);

    }
    System.out.println("sbResult: "+sbResult.toString());
于 2012-12-25T21:02:01.087 に答える