pageHelper 排序 +- 字符串处理

本文介绍了一种在Java后端处理前端传来的排序参数的方法。针对两种不同的参数格式,提供了具体的实现代码,并解释了如何使用正则表达式来转换符号为SQL可识别的ASC或DESC关键字。

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

自己记录一下。
前端要把sort参数传过来,

1. 如果约定是下面这种形式:

sort=id-name+age+

直接在java后台进行替换就行,连正则都不用。

sort = sort.replace("-", " desc,").replace("+", " asc,");
sort = sort.substring(0, sort.length() - 1);
PageHelper.startPage(pageNum, pageSize, sort)即可
        

2. 但是,大家好像都是采用类似这样的形式:

sort=+id-name+age

想要把+ - 替换成对应的asc desc就不是那么随便了。
我的方式:

sort = sort.replaceAll("\\+([\\w]+)", " $1" + " asc,");
sort = sort.replaceAll("\\-([\\w]+)", " $1" + " desc,");
sort = sort.substring(0, sort.length() - 1);
PageHelper.startPage(pageNum, pageSize, sort)

$1是用来获取前面正则表达式中的第1个小括号中的值的。我的第一个小括号把 减号后面的单词获取到,所以直接拼接asc, 就可以了。
同理,$2是用来获取第2个小括号中的内容的。

3. Demo:

public class Re {
    public static void main(String[] args) throws Exception {
        String a1 = "+id";
        String a2 = "+id-name+age";
        String a3 = "id+name-age";
        symbolReplace(a1);
        symbolReplace(a2);
        symbolReplace(a3);
    }

    public static String symbolReplace(String sort) throws Exception {
        if (!Pattern.matches("((\\+|\\-)[\\w]+)+", sort)) {
//            throw new Exception();自己定义一个格式非法异常,这里抛出去。
        }
        sort = sort.replaceAll("\\+([\\w]+)", " $1" + " asc,");
        sort = sort.replaceAll("\\-([\\w]+)", " $1" + " desc,");
        sort = sort.substring(0, sort.length() - 1);
        return sort;
    }
}

转载于:https://www.cnblogs.com/simuhunluo/p/9266831.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值