apollo
apollo copied to clipboard
末尾空格
apollo配置项如何让末尾空格起作用? 如"abc空格空格",读取出来后仍然是原样,而不是只剩下"abc"字符串了
@AdamsShen 怎么会有这种使用场景? 能举个例子吗
项目里面需要做一个字符串分隔符操作, 现在设置的分隔符为", "(逗号空格空格),为了方便更换,所以配置在apollo配置项中,但是现在无法设置,只能在程序中写死
@AdamsShen 如果是 Java 的 String#split
方法话, 配置 ,\\s\\s
是不是就可以了? 该方法参数是支持正则表达式的
是Java 使用的是repalceAll方法, 第二个参数是我要使用的分隔符,第二个参数不支持正则表达式,如将字符串"a;b;c"中的所有";"替换为分隔符("逗号空格空格"),而目前是分隔符配置在apollo配置中,所以存在上述问题
感觉这设计有点奇怪,你怎么看 @nobodyiam
看了一下是前端发起请求到后端时就trim掉了,@lepdou 还记得为啥会trim吗?
@kezhenxu94 @nobodyiam 配置的时候key=value的形式, key或者value前后有空格 你们都会做trim处理,其实没有问题,我现在有个建议,如果配置的value最后字符或者去掉空格后第一个字符为'\'(转义符号),获取得到值时就去掉该'\'保留剩下的值,如何需要值中有\,我们可以使用'\\'来转义代替, 你们觉得可行吗? 希望给点意见 并解决这个问题!谢谢!
这个规则看上去有点定制了,等于是让apollo制定了一个特殊的规则:输入\<whitespace>
,保存<whitespace>
,对配置中心而言,应该还是要尽可能的保持理解简单
@nobodyiam 那您觉得这是个问题吗? 如果是 应该怎么解决呢? 我们项目其实是有很多其他的方案解决这个问题,比如加密下或者用其他字符替代空格,然后读取出来再解密或者替代回来等等,但是总觉得都不太合理,不是解决问题的最优方案,所以还是希望从apollo的配置上根本解决这个问题,所以希望您这边能有一个好的解决方案,谢谢
页面上保存的时候加一个选项,是否保留尾空格?
@nobodyiam 我觉得这样也可以呀 但是如果想要保留value前面的空格呢?怎么处理呢?
应该是一样的吧,比如加个选项 - 是否启动去除多余空格,默认是勾上之类的?
像spring-boot 一样 约定双引号或单引号的情况下保留原串,如何?
@heobo 目前apollo的做法是原样返回,所以加了双引号,空格肯定是保留了,不过双引号也会保留
请问这个空格问题有解决方案了吗?目前apollo会trim掉key和value前后空格,中间的空格不会trim,但是现实场景中,确实有key或value前后需要空格的变态做法,之前宋哥建议增加是否保存空格的建议实现了吗?
@heobo 目前apollo的做法是原样返回,所以加了双引号,空格肯定是保留了,不过双引号也会保留
目前apollo 的做法并没有原样返回,而是删除了后面的空格。
建议有引号的时候对引号里面的内容原样返回,如果配置内容也需要引号,可以用单、双引号的配合实现,复杂的情况用转义字符。
比如 bash
export a=b #`b`
export a='hello "world" ' #`hello "world" `
export json='{"a":123,"b":"\""}' #`{"a":123,"b":"\""}`
export json="{\"a\":123,\"b\":\"\\\"\"}" #`{"a":123,"b":"\""}`
这个考虑在编辑时增加一个选项来控制是否自动去掉末尾空格吧
@nobodyiam 这个有计划支持么, heobo的建议挺好的. 支持用双引号.
key = " value "
" key " = " value "