一道Java测试题
写一个方法,将某字符串,例如"fa873jiwa12j4wi96awe"转换成"4,12,96,873"
记录下自己写的代码
参加了XX公司的培训班,这几天老师布置了一些题目,自己有点上头了
写了2天代码 ,结果老师3行就解决了
其中
自己写的垃圾code 1
修改前
// An highlighted block
package cn.edu.basic;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(fun1("fa873jiwa12j4wi96awe"));
System.out.println(fun1("fa873jiwa12j4wi96awe125"));
System.out.println(fun1("873jiwa12j4wi96awe125"));
System.out.println(fun1("873jiwa12j4wi96awe12a5"));
}
/**
* 写一个方法,将某字符串,例如"fa873jiwa12j4wi96awe"转换成"4,12,96,873"
* @param str
* @return
*/
public static String fun1(String str)
{
char[] charStr=str.toCharArray();
String []result=new String[str.length()];
String temp="";
int sum=0;
for(int i=0;i<charStr.length;i++)
{
if(charStr[i]>='0'&&charStr[i]<='9')
{
temp+=charStr[i];
//System.out.println(temp);
if(i<charStr.length-1)
{
if(charStr[i+1]>'9'||charStr[i+1]<'0')
{
result[sum++]=temp;
temp="";
continue;
}
}
else
{
result[sum++]=temp;
temp="";
continue;
}
}
}
String []result1=new String[sum];
int []result2=new int[sum];
for(int i=0;i<sum;i++)
{
result1[i]=result[i];
result2[i]=Integer.valueOf(result[i]);
}
Arrays.sort(result2);
return Arrays.toString(result2);
}
}
代码1 选择的测试字符串
代码1 运行结果
自己写的垃圾code2
修改后 调用spilt方法
package cn.edu.basic;
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(fun("fa873jiwa12j4wi96awe"));
System.out.println(fun("873jiwa12j4wi96"));
System.out.println(fun("873jiwa12j4wi96ji3e"));
}
public static String fun(String str)
{
String result=new String(str);
String temp="";
for(int i=0;i<result.length();i++)
{
if(result.charAt(i)<'0'||result.charAt(i)>'9')
{
result=result.replace(result.charAt(i), '#');
}
else
{
temp+= result.charAt(i);
}
}
String [] result1=result.split("#");
// System.out.println(Arrays.toString(result1));
// System.out.println(result1.length);
int sum=0;
String test1=new String();
for(int i=0;i<result1.length;i++)
{
if(!result1[i].isEmpty())
{
sum++;
}
}
int [] arr=new int[sum];
for(int i=0,j=0;i<result1.length;i++)
{
if(!result1[i].isEmpty())
{
arr[j++]=Integer.parseInt(result1[i]);
}
}
Arrays.sort(arr);
return Arrays.toString(arr);
}
}
代码2 测试字符串
代码2 运行结果
老师的3句神代码提示下 调用spilt函数和正则表达式
修改后 调用spilt方法 和使用正则表达式
package cn.edu.basic;
import java.util.Arrays;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="fa873jiwa12j4wi96awe";
System.out.println("处理前:\n"+str);
System.out.println("处理后:\n"+fun(str));
String str2="873jiwa12j4wi96awe65";
System.out.println("处理前:\n"+str2);
System.out.println("处理后:\n"+fun(str2));
String str3="kj873jiwa12j4wi9hkk6awe";
System.out.println("处理前:\n"+str3);
System.out.println("处理后:\n"+fun(str3));
}
public static String fun(String str)
{
String []str2=str.replaceAll("[\\D]+"," ").trim().split(" ");
int[] arr=new int [str2.length];
for(int i=0;i<arr.length;i++)
{
arr[i]=Integer.parseInt(str2[i]);
}
Arrays.sort(arr);
return Arrays.toString(arr);
}
}
优化后的运行结果