当前位置:网站首页>关于不等式取值转义的思路
关于不等式取值转义的思路
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进行替换即可。
边栏推荐
- Why don't I recommend going to sap training institution for training?
- wm_concat()和group_concat()函数
- 项目实战六:分布式事务-Seata
- Decompilation of zero time technology smart contract security series articles
- The eigen library calculates the angle between two vectors
- VCD video disc
- 限流设计及实现
- Eigen库计算两个向量夹角
- JVM entry Door (1)
- Tag dynamic programming - preliminary knowledge for question brushing -2 0-1 knapsack theory foundation and two-dimensional array solution template
猜你喜欢
随机推荐
元宇宙链游开发案例版 NFT元宇宙链游系统开发技术分析
Comparing the size relationship between two objects turns out to be so fancy
Crawl Douban to read top250 and import it into SqList database (or excel table)
Create a time blocker yourself
Handwritten numeral recognition based on tensorflow
How to create and enforce indexes
Installation and use of logstash
50行代码爬取Top500图书导入TXT文档
xlua获取ugui的button注册click事件
字符串String转换为jsonArray并解析
To: seek truth from facts
零时科技 | 智能合约安全系列文章之反编译篇
tag动态规划-刷题预备知识-2. 0-1背包理论基础和二维数组解法模板
stm32和电机开发(直流有刷电机和步进电机)
项目实战五:搭建ELk日志收集系统
Micro service single sign on system (SSO)
Numpy's Matplotlib
深度学习之Numpy篇
微信小程序 自定义 弹框组件
爬取豆瓣读书Top250,导入sqlist数据库(或excel表格)中