当前位置: 首页 > 知识库问答 >
问题:

分隔Java中的字母数字字符串[闭合]

东方嘉佑
2023-03-14

我有一个字符串,例如,AX3YM67。我想把字符串分离为Java中的A,X3,Y,M67。我怎么才能拿到这个?下面的代码是我尝试过的。

// Creating array of string length
char[] ch = new char[s.length()];

// Copy character by character into array
for (int i = 0; i < s.length(); i++) {
    ch[i] = s.charAt(i);
}

// finding all the indexes of elements
ArrayList<Integer> elementIndexes = new ArrayList<Integer>();

for (int j = 0; j < ch.length; j++) {
    if (Character.isLetter(ch[j])) {
        elementIndexes.add(j);
    }
}
for(int k = 0; k < elementIndexes.size(); k++) {
    if (elementIndexes.get(k) == elementIndexes.get(elementIndexes.size() - 1))  {
        terms.add(new Term(ch[elementIndexes.get(k)], Integer.parseInt(s.substring(elementIndexes.get(k) + 1))));
    }
    else if (elementIndexes.get(k) - elementIndexes.get(k + 1) == -1) {
        //System.out.println("K:" + k + " -- " + elementIndexes.get(k) + "-" + elementIndexes.get(k+1) + " = " + ch[k]);
        terms.add(new Term(ch[elementIndexes.get(k)], 1));
    } else {
        //System.out.println("G:" + elementIndexes.get(k) + "-" + formula.substring(elementIndexes.get(k), elementIndexes.get(k+1)));
        terms.add(new Term(ch[elementIndexes.get(k)], Integer.parseInt(s.substring(elementIndexes.get(k) + 1,elementIndexes.get(k+1)))));
    }
}

共有2个答案

夏侯嘉荣
2023-03-14

像这样试试。这将在前面没有数字的非数字之间的零宽度间隙上拆分。

String[] data = { "ABCDEF", "A1B2C3D4","AX3YM67", "A1233BB1233", "A3D456F6D" };
for (String str : data) {
    String st[] = str.split("(?!\\d)(?=\\D)");
    System.out.println(str + " --> " +  Arrays.toString(st));
}

印刷品

ABCDEF --> [A, B, C, D, E, F]
A1B2C3D4 --> [A1, B2, C3, D4]
AX3YM67 --> [A, X3, Y, M67]
A1233BB1233 --> [A1233, B, B1233]
A3D456F6D --> [A3, D456, F6, D]
狄鹏
2023-03-14
public static String splitAlpha(String str){
    char first = str.charAt(0);
    StringBuilder sb = new StringBuilder();
    sb.append(first);
    for(int i = 1; i< str.length(); i++){
        char c = str.charAt(i);
        if(Character.isDigit(c)){
            sb.append(c);
         }else{
             sb.append(",").append(c);
         }
    }
        return sb.toString();
}
 类似资料:
  • 问题内容: 输入示例: 输出示例: 字母和数字部分的长度不固定。 我知道如何将split()与regex一起使用,但是尽管我检查了Java API,但找不到任何可以帮助我解决此问题的东西。 有没有办法做到这一点?或者我需要使用另一种方法来拆分这些字符串。 任何帮助,将不胜感激。 问题答案: 试试这个正则表达式: 这是一个正在运行的示例:http : //ideone.com/c02rmM 正则表达

  • 问题内容: 所以我有一个像这样的字符串 我想做的就是分割此字符串,以便得到以下信息: 的作为对所述第三元件是指示所述的单原子性质元件。相同。这实际上是我正在努力的部分。 这是一个化学方程式,因此我需要根据元素的名称和存在的原子数量等来分离元素。 问题答案: 您可以尝试这种方法: 输出: 原子:[C,3,H,20,I,1,O,1] 现在所有偶数索引(0、2、4 …)都是原子,奇数是关联的数字: 输出

  • 我有一个包含以下两个字段的Lucene 3.6.0索引(每个字段下面都有示例数据): 字段由多个代码字符串组成,例如“CHP-13724”或“RPS-204979”。 所以:在字段中,由于某种原因,它无法找到空格分隔的字符串,除非它是第一个字符串,并且在查询中使用了通配符,但是在company字段中,无论字符串出现在哪里,并且不使用通配符,它都可以找到。 编辑:字段使用not_analysis进行

  • 问题内容: 任何人都可以通过正则表达式来帮助我。我想将以下字符串拆分为字母和数字。 分割后的示例字符串应为 和。 我尝试了以下正则表达式。 大写返回 但对于小写字母则返回 有没有办法得到像 问题答案: 您可以使用: 正则演示

  • 问题内容: Python newb在这里。我试图计算给定字符串中字母“ a”的数量。代码如下。它会继续在字符串“ banana”中返回1而不是3。任何输入表示赞赏。 问题答案: 其他答案表明您的代码出了什么问题。但是,如果您不只是为了锻炼,还可以通过内置的方式进行此操作: Danben给出了以下更正版本: 还有其他一些方法,希望它们能教给您更多关于Python的知识! 类似,但循环更短。利用了布尔

  • 问题内容: 我正在做一个作业,在该作业中,我必须编写程序以读取用户的字符串,并打印出字符串中出现次数的字母。 例如,“ Hello world”应该打印出“ h = 1 e = 1 l = 3 o = 2 …等”,但是我只写“ hello world”和字母总数。 我不能使用hashmap函数,只能使用数组。有人可以给我一两个提示,提示如何从下面的书面代码继续进行操作以获得我的首选功能?我不完全了