我有一个由大写字母和数字组成的字符串,需要“逻辑”排序并存储在数据库字段中。我已经解决了更新/更改/查询数据库部分的问题,但是在逻辑上排序这个字符串方面遇到了困难。
给定以下一组字符串: AB1 AB2 AB3 A11 AB10
我需要按字母顺序进行排序,如下所示: A11 AB1 AB2 AB3 AB10
为了实现这一点,我认为需要对字符串进行拆分。因为当前尝试按字母顺序排序会得到 A11 AB1 AB10 AB2 AB3
编辑:我需要能够存储一个已拆分的字符串和一个未拆分的字符串,以便与其他程序进行排序。
以下是我认为它们需要被拆分并排序的方式。
给定以下一组字符串: AB1 AB2 AB3 A11 AB10
我需要按字母顺序进行排序,如下所示: A11 AB1 AB2 AB3 AB10
为了实现这一点,我认为需要对字符串进行拆分。因为当前尝试按字母顺序排序会得到 A11 AB1 AB10 AB2 AB3
编辑:我需要能够存储一个已拆分的字符串和一个未拆分的字符串,以便与其他程序进行排序。
以下是我认为它们需要被拆分并排序的方式。
A11 - A 11
AB1 - AB 1
AB2 - AB 2
AB3 - AB 3
AB10 - AB 10
以下是一些常量,字符串长度不会超过5个字符,只包含大写字母和数字。
这是我的代码进展到的地方。我遇到了写作障碍,希望能得到一些帮助。我认为我需要找出它是否以字母开头,然后找出所有连续的字母,左对齐它们,接着处理数字,找出所有连续的数字并右对齐它们。不确定像'A1B1'这样的情况该如何处理...
for(int ii = 0;ii < sectionString.length() && ii< SECTIONSPACES;ii++){
System.out.print(" Was previous a number? " + isPreviousANumber + "\n");
try{
String tmpString = sectionString.substring(ii,ii + 1 );
int positionInCharArray = Integer.parseInt(tmpString);
System.out.printf(" Position " + ii + " is number " + positionInCharArray + "\n");
isPreviousANumber = true;
}catch(Exception e){
System.out.printf(" Position " + ii + " number is not a number " + sectionString.substring(ii,ii) + "\n");
isPreviousANumber = false;
}
}