自己记录一下。

前端要把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;
}
}
04-30 03:34