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谢谢。我误解了这个问题。我对另一个类似问题的回答很糟糕…很好。