代码之家  ›  专栏  ›  技术社区  ›  user855

配置单元是否有字符串分割函数?

  •  38
  • user855  · 技术社区  · 14 年前

    A|B|C|D|E
    

    然后我想要一个函数,比如:

    array<string> split(string input, char delimiter)
    

    所以我回来了:

    [A,B,C,D,E]
    

    这样的内置分割函数存在于蜂箱中。

    我只能看见 regexp_extract regexp_replace . 我很想看到 indexOf() split() 字符串函数。

    3 回复  |  直到 5 年前
        1
  •  53
  •   Bkkbrad    14 年前

    确实存在基于正则表达式的拆分函数。它没有被列出来 in the tutorial ,但它列在 the language manual on the wiki

    split(string str, string pat)
       Split str around pat (pat is a regular expression) 
    

    在您的例子中,分隔符“ | 作为正则表达式有特殊含义,因此应将其称为 \\| ".

        2
  •  38
  •   TayTay    8 年前

    ipname 表中有一个值“abc11.def.ghft.com”,您需要将“abc11”拉出:

    SELECT split(ipname,'[\.]')[0] FROM tablename;
    
        3
  •  9
  •   spelunk1    7 年前

    只是对BKBRAD给出的答案的澄清。

    我试过这个建议,但对我不起作用。

    例如,

    split('aa|bb','\\|')
    

    ["","a","a","|","b","b",""]
    

    但是,

    split('aa|bb','[|]')
    

    ["aa","bb"]
    

    将元字符“|”包含在方括号中会导致按原意对其进行字面解释,而不是将其解释为元字符。

    有关regexp的这种行为的详细说明,请参见: http://www.regular-expressions.info/charclass.html