首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何跳过fn中相同split pattern值的split功能:tokenize

如何跳过fn中相同split pattern值的split功能:tokenize
EN

Stack Overflow用户
提问于 2017-05-16 17:58:25
回答 2查看 164关注 0票数 0

我正在尝试拆分字符串(使用'|‘或',’分隔的字符串)。我使用fn:tokenize来实现这一点。考虑下面的示例文本,其中我有4列文本,其中在第3列中,我获得了与拆分模式相同的值。

fn:tokenize("column1|column2|||column4", "|")

上面代码的结果是给出了5个值,其中2个为空:

代码语言:javascript
复制
column1
column2


column4

我还尝试向column3值添加引号,这也没有给出预期的结果。

EN

回答 2

Stack Overflow用户

发布于 2017-05-17 18:15:53

在MarkLogic 9中,您可以定义自己的自定义记号赋予器。

票数 0
EN

Stack Overflow用户

发布于 2017-05-18 04:17:20

除了通过正则表达式对fn:tokenize进行拆分,从而需要对|进行转义之外,这似乎是一种可怕的数据格式。抛开Michael Kay指出的问题,并期望||将始终指示以|开头的新字段,并且永远不会有空列,您可以应用一个简单的技巧,将管道符号替换为另一个字符,然后再转换回来。不过,这需要您找到数据集中不允许的Unicode范围内的某些字符。

代码语言:javascript
复制
for $token in fn:tokenize(fn:replace("column1|||||column4", "\|\|", "|_"), "\|")
return fn:replace($token, "_", "|")

结果:

代码语言:javascript
复制
column1
|
|
column4

如果我所做的假设不适用于您的用例,您将不得不确定另一组类似的严格假设,以便能够解析您的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43998248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档