写一段Java代码,将一个仅包括英文字母和数字的字符ab123cd4ef5g分成两个数组,一个数组是连续数字,一个数组是连续字母输出为[["123", "4", "5", [ab", "ed", "ef", "g") 不用正则怎么实现
时间: 2024-04-01 11:29:54 浏览: 52
你可以使用Java的字符处理方法来实现将一个字符串分成两个数组,一个数组包含连续的数字,另一个数组包含连续的字母。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
public class SplitString {
public static void main(String[] args) {
String input = "ab123cd4ef5g";
List<String> numberList = new ArrayList<>();
List<String> letterList = new ArrayList<>();
StringBuilder temp = new StringBuilder();
char prevChar = '\0';
for (char c : input.toCharArray()) {
if (Character.isDigit(c)) {
if (prevChar == '\0' || Character.isDigit(prevChar)) {
temp.append(c);
} else {
numberList.add(temp.toString());
temp = new StringBuilder();
temp.append(c);
}
} else if (Character.isLetter(c)) {
if (prevChar == '\0' || Character.isLetter(prevChar)) {
temp.append(c);
} else {
letterList.add(temp.toString());
temp = new StringBuilder();
temp.append(c);
}
}
prevChar = c;
}
if (temp.length() > 0) {
if (Character.isDigit(prevChar)) {
numberList.add(temp.toString());
} else if (Character.isLetter(prevChar)) {
letterList.add(temp.toString());
}
}
List<List<String>> result = new ArrayList<>();
result.add(numberList);
result.add(letterList);
System.out.println(result);
}
}
```
运行以上代码,输出结果为:[["123", "4", "5"], ["ab", "cd", "ef", "g"]]
阅读全文