版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20086125/article/details/86491417
根据固定字符串生成固定长度的有序字符串组合集,这里是根据固定长度字符串(如:8位长度),生成至少3位长度的有序字符串组合集合,下面看实例:
import java.util.HashSet;
import java.util.Set;
/**
* @author
* @Description:根据固定字符串生成固定长度的有序字符串组合集
* @date 2019年01月15日 12:08
*/
public class StringCutMethod {
public static String cutString(String plateNo) {
plateNo = plateNo.toUpperCase();
if (null == plateNo || plateNo.isEmpty()) {
return null;
}
//自定义去掉第一个字符,剩下的字符串进行有序组合
String secondString = plateNo.substring(1);
int len = secondString.length();
Set<String> set = new HashSet<>();
// 3个字符
for (int i = 0; i <= len - 3; i++) {
set.add(secondString.substring(i, i + 3));
}
// 4个字符
for (int i = 0; i <= len - 4; i++) {
set.add(secondString.substring(i, i + 4));
}
// 5个字符
for (int i = 0; i <= len - 5; i++) {
set.add(secondString.substring(i, i + 5));
}
// 6个字符
for (int i = 0; i <= len - 6; i++) {
set.add(secondString.substring(i, i + 6));
}
// 特殊需求:去掉字母,再次进行有序组合
/*StringBuilder nums = new StringBuilder();
for (int i = 0; i < secondString.length(); i++) {
char tmp = secondString.charAt(i);
if (tmp >= 'A' && tmp <= 'Z') {
continue;
}
nums.append(tmp);
}
if (nums.length() >= 3) {
secondString = nums.toString();
len = secondString.length();
// 3个字符
for (int i = 0; i <= len - 3; i++) {
set.add(secondString.substring(i, i + 3));
}
//4个字符
for (int i = 0; i <= len - 4; i++) {
set.add(secondString.substring(i, i + 4));
}
//5个字符
for (int i = 0; i <= len - 5; i++) {
set.add(secondString.substring(i, i + 5));
}
// 6个字符(新能源车牌)
for (int i = 0; i <= len - 6; i++) {
set.add(secondString.substring(i, i + 6));
}
}*/
//组合成以,隔开的字符串返回
StringBuilder out = new StringBuilder();
int num = 0;
for (String word : set) {
num++;
if (num == 1) {
out.append(word);
} else {
out.append("," + word);
}
}
return out.toString();
}
public static void main(String[] args) {
System.out.println(cutString("沪A2K099"));
System.out.println(cutString("学999999"));
System.out.println(cutString("鄂A666666"));
}
}
执行结果如下:
K09,2K099,A2K09,A2K,K099,099,A2K099,A2K0,2K09,2K0
99999,9999,999999,999
666666,A66666,A66,A6666,6666,A666,666,66666