假设我有一个字符串:"123_12345_123456";
我想在第二个"_"(下划线(
我试过了:
fn:tokenize("123_1234_12345", '_')[position() le 2]
返回:
123
1234
我真正想要的是:
123_1234
我该如何做到这一点?
我使用的是XQuery 1.0
正则表达式灵活紧凑:
replace('123_1234_12345', '_[^_]+$', '')
另一个可读性更好的解决方案是:a(将字符串标记化,b(保留要保留的标记,c(再次加入它们:
string-join(
tokenize('123_1234_12345', '_')[position() = 1 to 2],
'_'
)
从Michael Kay删除的答案中获得基本思想,它可以这样实现:
substring($input, 1, index-of(string-to-codepoints($input), 95)[2] - 1)