我需要清理一个包含空格和制表符的字符串列,无论是在字符串的开头还是结尾(真是一团糟!).我想在每个单词之间只保留一个空格.假设我们有以下字符串,其中包括所有可能的情况:
mystring = ' one two three four '
- "一"前有2个空格
- 1"1"和"2"之间的空白
- "2"和"3"之间有4个空格
- "三"之后有两个标签
- "四"之后的1个标签
我是这样做的:
- 我删除前导空格和尾随空格
- 我删除前导和尾随标签
- 我用唯一的空格替换"至少重复两次的空格"和制表符
WITH
t1 AS (SELECT' one two three four '::TEXT AS mystring),
t2 AS (SELECT TRIM(both ' ' from mystring) AS mystring FROM t1),
t3 AS (SELECT TRIM(both '\t' from mystring) AS mystring FROM t2)
SELECT regexp_replace(mystring, '(( ){2,}|\t+)', ' ', 'g') FROM t3 ;
我最终得到了下面的字符串,看起来不错,但我仍然有一个尾随空格...
'one two three four '
有没有想过用更简单的方式来解决最后一个问题?
非常感谢!