【发布时间】:2017-02-09 00:53:47
【问题描述】:
如何获取字符串的子字符串:
"s3n://bucket/test/files/*/*"
我想单独获得 s3n://bucket/test/files。我尝试了拆分:
"s3n://bucket/test/files/*/*".split("/*/*") 但这给了我每个字符的字符串数组。
【问题讨论】:
如何获取字符串的子字符串:
"s3n://bucket/test/files/*/*"
我想单独获得 s3n://bucket/test/files。我尝试了拆分:
"s3n://bucket/test/files/*/*".split("/*/*") 但这给了我每个字符的字符串数组。
【问题讨论】:
split 的参数是一个正则表达式,/*/* 匹配字符串中的所有字符。你需要转义*:
"s3n://bucket/test/files/*/*".split("/\\*/\\*")
在这种情况下,split 的替代方案可能是:
"s3n://bucket/test/files/*/*".stripSuffix("/*/*")
【讨论】:
几个不使用正则表达式的选项。
使用takeWhile 会给出“s3n://bucket/test/files/”,其中包括最后一个斜杠。
scala> s.takeWhile(_ != '*')
res11: String = s3n://bucket/test/files/
使用indexOf 查找第一个“*”并使用比您指定的输出少一个字符。
scala> s.slice(0,s.indexOf("*") - 1)
res14: String = s3n://bucket/test/files
【讨论】: