携程测试编程题:客户下单的时候系统会发放一个优惠券码,用户在前端界面看到的展现形式如下

本文分享了一次软件测试课程的学习心得,同时介绍了解决一个优惠券码解密编程题的两种方法。一种是使用正则表达式直接替换数字,另一种是遍历字符串并检查每个字符,只保留非数字字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天大四第一节课,下午去上了软件测试的课程,中午乘机在微信读书多看了看关于软件测试的书。下午上课,一边在牛客刷题,一边听讲,状态蛮好的。一个戴眼镜的女老师,讲的还有点意思。
今天新买的古琴也到了,下午试弹了一下,手感蛮好,声音也不错,就是自己好久没弹了,找不到感觉,想抽点时间学习一下《长门怨》。
好了言归正传,说说这个编程题:

携程客户下单的时候系统会发放一个优惠券码,用户在前端界面看到的展现形式如下:“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();
    }
     
}

其实就是一个字符串的替换问题,还是比较简单的。哎,开发实在找不到工作的话,努力一下去做测试。哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值