Java通过替换特定字符来转换一组字符串

Java通过替换特定字符来转换一组字符串,java,arrays,string,list,replace,Java,Arrays,String,List,Replace,但我希望输出如下: [12, 124, 1234, 123, 1234] [astv, atthh, ggh, dhr, sfff, dgdfg, mnaoj] 要获取数字数组,您可以 用空字符串替换所有字母表 按星号拆分* - 代码 您可以重复同样的操作来获取字母表数组 String digitArr[] = str.replaceAll("[A-Za-z]", "").split("\\*"); //output //12124 1234123 1234 您可以将拆分与*一起使用,

但我希望输出如下:

[12, 124, 1234, 123, 1234]
[astv, atthh, ggh, dhr, sfff, dgdfg, mnaoj]

要获取数字数组,您可以

  • 用空字符串替换所有字母表
  • 按星号拆分
    *
- 代码

您可以重复同样的操作来获取字母表数组

String digitArr[] = str.replaceAll("[A-Za-z]", "").split("\\*");
//output
//12124 1234123 1234 

您可以将拆分与
*
一起使用,然后可以使用每个元素,例如:

String stringArr[] = str.replaceAll("[0-9]", "").split("\\*");
//Output
//astv atthhggh dhrsfff dgdfg mnaoj 


要保留原始正则表达式逻辑,可以执行以下操作:

[12124, 1234123, 1234]
[astv, atthhggh, dhrsfff, dgdfg, mnaoj]

你为什么不想要
12
124
123
?您需要提供一些选择标准。请澄清您的问题。你能解释一下你想要实现的逻辑吗?我有一个类似“astv*12atthhh124ggh*dhr1234sfff123*dgdfg1234*mnaoj”的字符串,我想把数字和sting分别拆分成这样的列表[astv,atthhhggh,dhrsfff,dgdfg,mnaoj][1212412341231234]您需要澄清为什么
12124
在列表中,而
12
不在列表中。两者都出现在字符串中,但列表中只有前者。@ManojKumarGovindharaj是的,这一点很清楚。我不明白的是为什么
12
124
应该组合在一起,但是
124
1234
不应该组合在一起。如果最初没有模式组合,则需要使用该字符进行拆分
String stringArr[] = str.replaceAll("[0-9]", "").split("\\*");
//Output
//astv atthhggh dhrsfff dgdfg mnaoj 
public static void main(String[] args) {
    String str = "astv*12atthh124ggh*dhr1234sfff123*dgdfg1234*mnaoj";
    String[] spl = str.split("\\*");//[astv, 12atthh124ggh, dhr1234sfff123, dgdfg1234, mnaoj]
    List<String> strings = new ArrayList<>();
    List<Integer> nums = new ArrayList<>();
    for (String s : spl) {

        String tmp = s.replaceAll("\\d+", "");//replace all the digits with empty
        if (!tmp.trim().isEmpty()) {
            strings.add(tmp);
        }

        tmp = s.replaceAll("[a-z]+", "");//replace all the character with empty
        if (!tmp.trim().isEmpty()) {
            nums.add(Integer.parseInt(tmp));
        }
    }

    System.out.println(nums);
    System.out.println(strings);
}
[12124, 1234123, 1234]
[astv, atthhggh, dhrsfff, dgdfg, mnaoj]
public static void main(String[] args) {
    String str = "astv*12atthh124ggh*dhr1234sfff123*dgdfg1234*mnaoj";
    List<String> strings = new ArrayList<>();
    List<Integer> nums = new ArrayList<>();
    Pattern digitPattern = Pattern.compile("\\d+");
    Pattern alphaPattern = Pattern.compile("[a-z]+");
    String[] splittedArray = str.split("\\*");
    for (String nextSplittedString : splittedArray) {
        Matcher digitMatcher = digitPattern.matcher(nextSplittedString);
        Matcher alphaMatcher = alphaPattern.matcher(nextSplittedString);
        String nextDigitAsString = "";
        while (digitMatcher.find()) {
            nextDigitAsString += digitMatcher.group();
        }
        if (!nextDigitAsString.isEmpty()) {
            nums.add(Integer.parseInt(nextDigitAsString));
        }

        String nextString = "";
        while (alphaMatcher.find()) {
            nextString += alphaMatcher.group();
        }
        if (!nextString.isEmpty()) {
            strings.add(nextString);
        }
     }
     System.out.println(nums);
     System.out.println(strings);
}
[12124, 1234123, 1234]
[astv, atthhggh, dhrsfff, dgdfg, mnaoj]