今天大四第一节课,下午去上了软件测试的课程,中午乘机在微信读书多看了看关于软件测试的书。下午上课,一边在牛客刷题,一边听讲,状态蛮好的。一个戴眼镜的女老师,讲的还有点意思。
今天新买的古琴也到了,下午试弹了一下,手感蛮好,声音也不错,就是自己好久没弹了,找不到感觉,想抽点时间学习一下《长门怨》。
好了言归正传,说说这个编程题:
携程客户下单的时候系统会发放一个优惠券码,用户在前端界面看到的展现形式如下:“1Ct3r4ip_ti4C6k9Et^”,包含数字、字母、和 []^’ 6个特殊字符。
为了安全性,系统在使用的时候做解密操作,删除里面的数字部分,只验字母A~z以及[]^’ 6个特殊字符部分才是有效的,并且在解密后不会重新排序字母的顺序,按照之前的对应顺序排列。
如上所示,如果一个客户拿到的优惠券码是这个:1Ct3r4ip_ti4C6k9Et^ , 请用java语言提取正确的优惠券码。
第一个思路是直接替换
public class Main{
public static void main(String arr[]){
String str = "1Ct3r4ip_ti4C6k9Et^";
String result = str.replaceAll("\\d+", "");
//\d是正则表达式中的一个匹配字符,意思是表示匹配一个任何数字字符直接替换即可
System.out.println(result);
}
}
第二种方法:
package test;
import java.util.*;
/**
* @author 海小飞
*
*/
public class Main{
@SuppressWarnings("resource")
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
String st=sc.next();
System.out.println(solution(st));//输入一个字符串
}
public static String solution(String s){
StringBuffer sb=new StringBuffer();
for(int i=0;i<s.length();i++){
char c=s.charAt(i); //charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
if(Character.isDigit(c)) //isDigit() 方法用于判断指定字符是否为数字
continue;
else if(c=='$')
sb.append('^');//^ 和 $ 分别用来匹配字符串的开始和结束
else
sb.append(c);
/**
* append方法的作用是在一个StringBuffer对象后面追加字符串。
* 例如StringBuffer s = new StringBuffer("Hello");s.append("World");
*则s的内容是HelloWorld。
*/
}
return sb.toString();
}
}
其实就是一个字符串的替换问题,还是比较简单的。哎,开发实在找不到工作的话,努力一下去做测试。哈哈