Java 将字符串拆分为数组

Java 将字符串拆分为数组,java,arrays,string,Java,Arrays,String,我试图将字符串的组件拆分为一个数组,以便更容易地访问它们 例如:4+5=应该变成['4'、'+'、'5'、'='] 编辑:- 我需要连续的数字连接在一起,空白可以忽略。再次感谢 您可以使用toCharArray()方法 发出 4 + 5 = 您可以使用toCharArray()方法 发出 4 + 5 = 你可以用 String str = "4+5="; String[] tokens = str.split("(?!^)"); for (String s : tokens) { S

我试图将字符串的组件拆分为一个数组,以便更容易地访问它们

例如:
4+5=
应该变成
['4'、'+'、'5'、'=']

编辑:- 我需要连续的数字连接在一起,空白可以忽略。再次感谢

您可以使用toCharArray()方法

发出

4
+
5
=
您可以使用toCharArray()方法

发出

4
+
5
=
你可以用

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

4  
+  
5  
=
你可以用

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

4  
+  
5  
=

您可以使用正则表达式机制来解决它

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+",");

您可以使用正则表达式机制来解决它

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+",");

你可以这样做:

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]);
    }
}
publicstaticvoidmain(字符串参数[]){
字符串str=“45+5-26”;
字符串strArr[]=新字符串[str.length()];
StringBuffer sb=新的StringBuffer();
int-cnt=0;
对于(int i=0;i如果(ch>=48&&ch您可以这样做:

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]);
    }
}
publicstaticvoidmain(字符串参数[]){
字符串str=“45+5-26”;
字符串strArr[]=新字符串[str.length()];
StringBuffer sb=新的StringBuffer();
int-cnt=0;
对于(int i=0;i如果(ch>=48&&ch,dude:)您的字符串总是数字运算符number等于还是有其他可能的字符串?我刚刚回答了一个问题,我想,您需要编辑您的问题,因为您需要的是解析结果,而不仅仅是单个字符的数组。dude:)您的字符串是否总是number运算符number等于?或者是否有其他可能的字符串?我刚刚回答了一个问题,我想,您需要编辑您的问题,因为您需要的是解析结果,而不仅仅是单个字符数组。这将断开,因为
45+45=90
将再次断开。它现在在空字符串上断开。@Rohit我测试过了。
toCharArray
中断或空
拆分
一个。请您解释一下,为什么您认为它是错误的?@mtk..toCharArray将
4
5
视为
45+45=90
的不同字符。OP希望它们在一起。它返回以下数组:-
['4','5','+','4','5'…]
@Rohit谢谢你。我误解了这个问题。我对另一个类似问题的糟糕…很棒的回答。这个问题会因为
45+45=90
而中断。它现在会在空字符串上拆分。@Rohit我测试过。既不是
tocharray
中断,也不是空的
split
一个。请你解释一下,为什么你会想到它ong?@mtk..toCharArray将
4
5
视为
45+45=90
的不同字符。OP希望它们在一起。它返回以下数组:-
['4','5','+','4','5'…]
@Rohit谢谢。我误解了这个问题。我对另一个类似问题的回答很糟糕…很好。