首页 > 代码库 > 多参数之间,建议用逗号做分隔符

多参数之间,建议用逗号做分隔符

问题:
参数如果是List,应该用什么分隔符来连接呢?例如:
1、GET方法,拥有参数key1,它的对应值是一个list,值为value1,value2,用什么分隔符连接这两个value值
2、配置文件中,value值也是一个list,又该怎么拼接?
3、将list保存为db的一个字段,用什么分隔符

总结:采用逗号做分隔符。也就是配置文件中,是key=value,value2;GET方法中,url为http://host/key=value1,value2&otherkey=value3;db字段值key=value1,value2

具体原因如下:

1、先讨论第二个情况,如果是配置文件,建议用“,"分隔符
apache的commons-configuration包,可以帮助我们读取配置文件。它本身包含一个getList方法,这个方法可以将value值转换为一个list。value的分隔符,默认是“,",例如配置文件内容为name=harryli,ponyma,通过getList("names"),能够直接返回一个list类型,这样更方便我们做后续操作。apache使用“,"做分隔符,肯定是经过推敲的,而且,如果遵循这个规范,我们也能直接使用getList方法。

2、再讨论第一个情况,可以有"+",";",","三个候选:
"+"是url中的特殊字符,传参如果是加号,会被转成空格,因此,不能用+号
";"号,在W3C的规范中,认为“;"可以和“&”一样,用于参数之间的连接符,例如http://host/?x=1&y=2等同于http://host/?x=1;y=2。既然它拥有这个含义,那我们就不能用“;"作为参数内容分隔符
”,"号没有分号的顾虑,同时,考虑到配置文件也建议用","做分隔符,因此对于GET方法,也同样建议,用","(逗号)作为参数内容的分隔符

3、接着讨论第三个情况,对于数据库来说,也是保存为逗号好,因为mysql有一个方法FIND_IN_SET,可以对逗号拼接的str进行搜索,例如,字段值str_list为‘1,2,3’,那么FIND_IN_SET(‘2‘,str_list)就能匹配到这条数据,因为字段‘1,2,3‘通过逗号分割后,是一个list,有三个值,其中包含了2这个值

综上所述,一般采用逗号作为分隔符



多参数之间,建议用逗号做分隔符