我試圖將字符串的組成部分拆分爲數組,以便更容易地訪問它們。將字符串拆分爲數組
例如:4+5=
應該變成['4','+','5','=']
。
編輯: - 我需要連續的數字連接在一起,並且可以忽略空格。再次感謝!
我試圖將字符串的組成部分拆分爲數組,以便更容易地訪問它們。將字符串拆分爲數組
例如:4+5=
應該變成['4','+','5','=']
。
編輯: - 我需要連續的數字連接在一起,並且可以忽略空格。再次感謝!
你可以用正則表達式lookaround來解決它。
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,
你可以使用toCharArray()方法
String s ="4+5=";
char [] stArr = s.toCharArray();
for(char ss: stArr){
System.out.println(ss);
}
出把
4
+
5
=
您可以使用
String str = "4+5=";
String[] tokens = str.split("(?!^)");
for (String s : tokens) {
System.out.println(s);
}
這將輸出
4
+
5
=
你可以做這樣的事情:
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());
[String.split()](http://docs.oracle.com/javase/1.4.2/docs/api /java/lang/String.html),夥計:) – paulsm4
是你的字符串總是number-operator-number-equals還是有其他可能的字符串? – Philipp
我剛剛回答了[類似問題](http://stackoverflow.com/questions/14032850/can-split-string-method-of-java-return-the-array-with-the-delimiters-as-well/ 14032866#14032866) –