碰到一个这样的场景,数据库字段bill_no 代表单据编号,然后返回前端json 是billNo,严格按照驼峰命名法,现在前端需要自定义按照箭头进行排序,但是并不知道数据库字段,所以前端只能给你"billNo desc" 这种然后我们进行对应转换进而排序。很多字段所以可以进行正则表达式进行转换 转成bill_no desc。再传入到数据库中。目前想到了这个办法,好的办法可以进行交流。
代码如下:
package com.demo.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestPattern {
/**
* 正则匹配
*/
private static final String PATTERN = "[A-Z]";
public static void main(String[] args) {
// 举例字符串
String str = "billNo desc";
// 创建一个正则表达式
Pattern p = Pattern.compile(PATTERN);
StringBuilder orderStr = new StringBuilder(str);
// 用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.
Matcher matcher = p.matcher(str);
int i = 0;
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String s = matcher.group().toLowerCase();
orderStr.replace(start + i, end + i, "_" + s);
i++;
}
if ('_' == orderStr.charAt(0)) {
orderStr.deleteCharAt(0);
}
System.out.println(orderStr);
}
}
运行结果:
bill_no desc
对应Pattern与Matcher解释可以参考:https://www.cnblogs.com/gdwkong/articles/7782331.html