夹杂数字字母大小写的字符串按字典排序方法
目录
核心步骤概要
过滤
过滤数字等特殊符号,只剩下字母
这里要用到String类自带的replaceAll方法以及表达式进行过滤
分割
将字符串进行单字符分割
这里要用到String类自带的substring方法
排序
将分割得到的单字符String数组进行忽略大小写的排序
这里要用到Arrays类中的sort方法
关键代码演示
写在前面
因为输入的行数和字符串内容任意,所以将每行的字符串直接add入Java的ArrayList动态数组中,接着再装入用length初始化的String字符串数组newArray中,从而避免了从Object类型进行强制转换String[]的风险
字符串过滤演示
for (int i=0;i <elementIndex;i++)
newArray[i] = newArray[i].replaceAll("\\d+","");
//这里演示的是去除数字
拓展:
.replaceAll(“转义符+正则表达式”,“要替换成的字符”);
字符串分割演示
for(int k=0;k<newArray[number].length();k++)
sortArray[k] = newArray[number].substring(k,k+1);
//用一个for循环一次切割一个字符并添加入sortArray中
拓展:
String类常用方法
方法用途 | 定义 |
---|---|
起止字符分割字符串 | substring(int beginIndex,int endIndex) |
将某字符用作分隔符 | split(String regex) return String[] |
转成大写字母 | toUpperCase() |
转成小写字母 | toLowerCase() |
去掉开始和末尾的空格 | trim() return a string |
比较字符串 | boolean equals(Object anObject) |
单字符String数组排序演示
Arrays.sort(sortArray,String.CASE_INSENSITIVE_ORDER);
//不分大小写进行排序
拓展:
Arrays类常用方法
方法用途 | 定义 |
---|---|
将数组排序 | sort() |
查找数组中的值 | binarySearch(object[ ], object key) *先用sort()排序后用 |
复制数组 | int[] copyOf(int[] original,int newLength) |
数组中值的替换 | fill(int[] a,int val) |
待续…. |
完整代码demo演示
/**
* Created by Tecker on 2016/6/21.
*/
import java.util.*;
public class UsingArrayList {
public static void main(String[] args){
int elementIndex = 1;
Scanner inputElement = new Scanner(System.in);
ArrayList elementlist = new ArrayList();
boolean inputOver = false;
System.out.printf("请任意输入N行N个字符串\n");
System.out.printf("当输入inputOver时结束\n");
do {
System.out.printf("输入第" + elementIndex + "个字符串\n");
System.out.printf(">>");
String input = inputElement.nextLine();
if (input.equals("inputOver")){
inputOver = true;
System.out.println("输入完毕!");
}
else {
elementlist.add(input);
elementIndex++;
}
}while (inputOver == false); //用do-while语句加上if判断来控制输入N行夹杂数字大小写的字符串
elementIndex = elementIndex - 1;
System.out.printf("排序前:\n");
String[] newArray = new String[elementIndex];
for (int k=0;k <elementIndex;k++)
System.out.printf(">> " + elementlist.get(k) + "\n");
for (int index=0;index <elementIndex;index++)
newArray[index] = elementlist.get(index).toString();
for (int i=0;i <elementIndex;i++)
newArray[i] = newArray[i].replaceAll("\\d+","");
for (String element : newArray)
System.out.printf(element +"\n");
System.out.println("排序后\n");
for (int listIndex=0;listIndex <newArray.length;listIndex++){
sortArrays(listIndex,newArray);
}
}
public static void sortArrays(int number,String[] newArray){
String[] sortArray = new String[newArray[number].length()];
for(int k=0;k<newArray[number].length();k++){
sortArray[k] = newArray[number].substring(k,k+1);
}
Arrays.sort(sortArray,String.CASE_INSENSITIVE_ORDER);
String finalString = ">>";
for (int j=0;j<sortArray.length;j++){
finalString = finalString.concat(sortArray[j]);
}
System.out.println(finalString);
}
}