您的位置:首页 > 编程语言 > Java开发

夹杂数字字母大小写的字符串排序方法

2016-07-01 17:19 489 查看

核心步骤概要

过滤

过滤数字等特殊符号,只剩下字母

这里要用到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
4000
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);
}

}


PS:本人初学Java,如有任何问题及更好的建议,欢迎批评指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息