夹杂数字字母大小写的字符串排序方法
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,如有任何问题及更好的建议,欢迎批评指正!
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 在命令行用 sort 进行排序
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序