Java 如何从字符串中获取数字和字母?

Java 如何从字符串中获取数字和字母?,java,Java,我正试图找到一种在java中拆分字符串的方法,该方法遵循如下模式: String a = "24ab4h"; 由此产生的结果应如下所示: st[0] = "24"; st[1] = "a"; st[2] = "b"; st[3] = "4"; st[4] = "h"; 然而,我完全不知道如何才能做到这一点。拜托,有人能帮我吗?我曾尝试在网上搜索类似的问题,但是,在搜索中很难正确表达它。尝试在循环中逐字符处理字符串 String a = "24ab4h"; 如果焦点字符(2)是数字-检查下

我正试图找到一种在java中拆分字符串的方法,该方法遵循如下模式:

String a = "24ab4h";
由此产生的结果应如下所示:

st[0] = "24";
st[1] = "a";
st[2] = "b";
st[3] = "4";
st[4] = "h";

然而,我完全不知道如何才能做到这一点。拜托,有人能帮我吗?我曾尝试在网上搜索类似的问题,但是,在搜索中很难正确表达它。

尝试在循环中逐字符处理字符串

String a = "24ab4h"; 
如果焦点字符(
2
)是数字-检查下一个字符(
4
)。如果下一个字符也是一个数字-继续扫描。如果下一个字符不同于数字-保存聚焦字符(或聚焦字符序列,在本例中为-
24


字母表字符的逻辑相同。

尝试在循环中逐字符处理字符串

String a = "24ab4h"; 
如果焦点字符(
2
)是数字-检查下一个字符(
4
)。如果下一个字符也是一个数字-继续扫描。如果下一个字符不同于数字-保存聚焦字符(或聚焦字符序列,在本例中为-
24

字母字符的逻辑相同。

如果使用
split()
函数,则会丢失用作分隔符的元素,因此我认为使用模式更好:

public static void main(String args[]) {

    Matcher m = Pattern.compile("\\d+|[a-zA-Z]").matcher("24ab4h");

    List<String> res = new ArrayList<>();

    while (m.find()) {
        res.add(m.group());
    }     
}
publicstaticvoidmain(字符串参数[]){
Matcher m=Pattern.compile(“\\d+|[a-zA-Z]”)。Matcher(“24ab4h”);
List res=new ArrayList();
while(m.find()){
res.add(m.group());
}     
}
模式将单独检测所有数字组或alLabet字符,然后将所有字符添加到
列表
(优于
数组
,因为您不知道大小)


如果您真的希望在末尾有一个数组,那么
List->String[]
有两种解决方案:

  • String[]array=res.toArray(新字符串[res.size()])

  • String[]array=res.stream().toArray(String[]::new)

如果使用
split()
函数,将丢失用作分隔符的元素,因此我认为使用模式更好:

public static void main(String args[]) {

    Matcher m = Pattern.compile("\\d+|[a-zA-Z]").matcher("24ab4h");

    List<String> res = new ArrayList<>();

    while (m.find()) {
        res.add(m.group());
    }     
}
publicstaticvoidmain(字符串参数[]){
Matcher m=Pattern.compile(“\\d+|[a-zA-Z]”)。Matcher(“24ab4h”);
List res=new ArrayList();
while(m.find()){
res.add(m.group());
}     
}
模式将单独检测所有数字组或alLabet字符,然后将所有字符添加到
列表
(优于
数组
,因为您不知道大小)


如果您真的希望在末尾有一个数组,那么
List->String[]
有两种解决方案:

  • String[]array=res.toArray(新字符串[res.size()])

  • String[]array=res.stream().toArray(String[]::new)

公共静态void main(字符串[]args){
/*
*堆栈=新堆栈(5);Stack.push(“10”);Stack.push(“20”);
*栈.推(“20”);栈.推(“20”);栈.推(“20”);
*stack.push(“20”);stack.push(“20”);stack.displayStack();
*/
字符串a=“24ab4h”;
System.out.println(Arrays.deepToString(splitString(a));
}
私有静态字符串[]拆分字符串(字符串a){
字符[]结果=新字符[a.长度()];
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
公共静态void main(字符串[]args){
/*
*堆栈=新堆栈(5);Stack.push(“10”);Stack.push(“20”);
*栈.推(“20”);栈.推(“20”);栈.推(“20”);
*stack.push(“20”);stack.push(“20”);stack.displayStack();
*/
字符串a=“24ab4h”;
System.out.println(Arrays.deepToString(splitString(a));
}
私有静态字符串[]拆分字符串(字符串a){
字符[]结果=新字符[a.长度()];
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
拆分的规则是什么?每一个字母或4后面都要分开?分开数字和字母表。但是你把“ab”分成“a”和“b”,但是你没有把“24”分开,所以^^拆分每个字符,如果它们是数字,则包含两个或多个连续字符。我不想拆分数字,但我想拆分字母表。拆分的规则是什么?每一个字母或4后面都要分开?分开数字和字母表。但是你把“ab”分成“a”和“b”,但是你没有把“24”分开,所以^^拆分每个字符,如果它们是数字,则合并两个或多个连续字符。我不想拆分数字,但我想拆分字母表。我使用此代码进行拆分,但它不会拆分“ab”,因为“a”和“b”扫描仪sc=新扫描仪(System.in);字符串str=sc.nextLine();String strA[]=str.split(“(?是的。我知道您想要什么,但我无法帮助您为split方法使用正确的正则表达式。或者,您可以使用
StringBuilder
处理数字。并且不使用StringBuilder处理字母字符(因为您只需要1个字符)。当字符串的一部分准备就绪时,将其添加到ArrayList。当您完成pro