当前位置:网站首页>关于不等式取值转义的思路
关于不等式取值转义的思路
2022-06-26 18:39:00 【51CTO】
最近遇到一个需求,前端填写不等式,后端需要需要进行存储,并在使用时需要将不等式转义成区间的形式,下面分享下大体的解决思路,仅供参考。
一、和前端约定传递的数据格式
前端的页面展示是这样的

和前端约定的传参格式为
利用 @ 符号对符号和版本号进行分隔,在后续入库时也可以根据这个符号进行切割,有多条规则可以传字符串数组,也可以传用逗号分隔的字符串
二、入库前校验
//多条规则版本号最大值最小值校验
versionRangeList :
=
strings
.
Split(
body
.
VersionRange,
",")
switch
len(
versionRangeList) {
case
1:
version :
=
strings
.
Split(
versionRangeList[
0],
"@")
switch
version[
0] {
case
GT,
GE,
LT,
LE,
EQ,
NE:
//正常规则
default:
return
tracerr
.
NewError(
"规则不合法,传参异常:"
+
versionRangeList[
0])
}
case
2:
version1 :
=
strings
.
Split(
versionRangeList[
0],
"@")
version2 :
=
strings
.
Split(
versionRangeList[
1],
"@")
switch
version1[
0] {
case
GT,
GE:
if
version1[
1]
>=
version2[
1]
|| (
version2[
0]
!=
LT
&&
version2[
0]
!=
LE) {
return
tracerr
.
NewError(
"规则不合法,版本号最小值没有小于最大值")
}
case
LT,
LE:
if
version1[
1]
<=
version2[
1]
|| (
version2[
0]
!=
GT
&&
version2[
0]
!=
GE) {
return
tracerr
.
NewError(
"规则不合法,版本号最小值没有小于最大值")
}
default:
return
tracerr
.
NewError(
"规则不合法,多条规则只能选择:gt,ge,lt,le")
}
default:
return
tracerr
.
NewError(
"规则不合法,规则数量异常,规则数量为:"
+
strconv
.
Itoa(
len(
versionRangeList)))
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
三、转义成区间
因为在使用时需要将不等式转换为区间的形式传给其他模块,因此我选择创建一个map,建立不等式与区间格式的对应关系
//不等式常量
const (
GT
=
"gt"
//大于
GE
=
"ge"
//大于等于
LT
=
"lt"
//小于
LE
=
"le"
//小于等于
EQ
=
"eq"
//等于
NE
=
"ne"
//不等于
)
func
RuleReversal(
versionRange []
string) (
reversalResult
string) {
//反转规则Map
ruleReversalMap :
=
map[
string]
string{
GT:
"(,Ver]",
GE:
"(,Ver)",
LT:
"[Ver,)",
LE:
"(Ver,)",
EQ:
"(,Ver),(Ver,)",
NE:
"[Ver]",
}
switch
len(
versionRange) {
case
1:
version :
=
strings
.
Split(
versionRange[
0],
"@")
reversalResult
=
strings
.
ReplaceAll(
ruleReversalMap[
version[
0]],
"Ver",
version[
1])
case
2:
version1 :
=
strings
.
Split(
versionRange[
0],
"@")
version2 :
=
strings
.
Split(
versionRange[
1],
"@")
switch
version1[
0] {
case
GT,
GE:
reversalResult
=
strings
.
ReplaceAll(
ruleReversalMap[
version1[
0]],
"Ver",
version1[
1])
+
","
+
strings
.
ReplaceAll(
ruleReversalMap[
version2[
0]],
"Ver",
version2[
1])
case
LT,
LE:
reversalResult
=
strings
.
ReplaceAll(
ruleReversalMap[
version1[
0]],
"Ver",
version1[
1])
+
","
+
strings
.
ReplaceAll(
ruleReversalMap[
version2[
0]],
"Ver",
version2[
1])
default:
tracerr
.
Print(
errors
.
New(
"规则不合法,版本不等式异常:"
+
version1[
0]))
return
""
}
default:
tracerr
.
Print(
errors
.
New(
"规则不合法,规则数量异常,规则数量为:"
+
strconv
.
Itoa(
len(
versionRange))))
return
""
}
return
reversalResult
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
利用 @ 符号对符号和版本号进行分隔,将分隔后的不等式符号去map中获取对应的区间格式,再将分隔后的版本号对获取到的区间格式中的Ver进行替换即可。
边栏推荐
- 链游开发成品源码 链游系统开发详情说明
- DAPP丨LP单双币流动性质押挖矿系统开发原理分析及源码
- Convex hull problem
- Do you know how to compare two objects
- 交叉编译环境出现.so链接文件找不到问题
- Eigen库计算两个向量夹角
- Clion compiling catkin_ WS (short for ROS workspace package) loads cmakelists Txt problems
- 爬取豆瓣读书Top250,导入sqlist数据库(或excel表格)中
- 50 lines of code to crawl TOP500 books and import TXT documents
- (几何) 凸包问题
猜你喜欢

带你解决哈希冲突,并实现一个简单hash表,

Project practice 4: user login and token access verification (reids+jwt)

Filebeat安装及使用

Convex hull problem

DVD-数字通用光盘

Numpy's Matplotlib

深度学习之Numpy篇

Preliminary analysis of serial port printing and stack for arm bare board debugging

MySQL download and configuration MySQL remote control

(几何) 凸包问题
随机推荐
LeetCode 面试题29 顺时针打印矩阵
Determine whether a sequence is a stack pop-up sequence
Vscode 基础必备 常用插件
gdb安装
ROS的发布消息Publishers和订阅消息Subscribers
Conditional compilation in precompiling instructions
Handwritten numeral recognition based on tensorflow
Leetcode interview question 29 clockwise print matrix
redis 基础知识
几种常见的UML关系图汇总
Idea collection code, quickly open favorites collection window
Feign远程调用
链游开发成品源码 链游系统开发详情说明
SQL中的并、交、差运算
NFTGameFi链游系统开发详解方案丨链游系统开发原理解析
你了解如何比较两个对象吗
Several delete operations in SQL
Numpy之matplotlib
Decompilation of zero time technology smart contract security series articles
Refresh the strong pointer assignment problem in the HP-UX system of Sanguan