2

我正在尝试获取文件!字符串类型并将其分为两部分。一个是目录中最后一个斜杠的所有部分,另一个是文件本身的名称。

我试过这个:

>> parse %dir/other-dir/file.ext [collect [keep thru [any thru %/] keep to end]]

但这只是让我回到了[%dir/other-dir/file.ext] 我希望获得两个元素块的全名[%dir/other-dir/ file.ext]

[none file.ext]如果我给出了一个像 just 这样的输入,我也想%file.ext

4

1 回答 1

3

你有一个'通过太多。

red>> parse %abc/file.ext [collect[keep [some [thru #"/"] | keep (none) ] keep to end]]
== [%abc/ %file.ext]
red>> parse %/abc/file.ext [collect[keep [some [thru #"/"] | keep (none) ] keep to end]]
== [%/abc/ %file.ext]
red>> parse %/abc/def/file.ext [collect[keep [some [thru #"/"] | keep (none) ] keep to end]]
== [%/abc/def/ %file.ext]

如果输入中没有斜线,我正在使用'some,因此规则失败。然后使用“| keep (none)”保留你想要的'none。

“keep(something)”通过'do方言保持运行“something”的返回值。

red>> parse %file.ext [collect[keep [some [thru #"/"] | keep (none) ] keep to end]]
== [none %file.ext]

没有它,你只会得到文件部分。

red>> parse %file.ext [collect[keep [any [thru #"/"]] keep to end]]
== [%file.ext]

red>> parse %/abc/def/file.ext [collect[keep [any [thru #"/"]] keep to end]]
== [%/abc/def/ %file.ext]
于 2014-04-26T20:02:50.530 回答