Red或Rebol:如何将"test/a"转成[test/a]?用to-word报错
解决Rebol中字符串转块的语法错误问题
你遇到的语法错误根源很明确:to-word函数的作用是把字符串转换成Rebol的**单词(Word)**类型,但Rebol的单词规则里不允许包含/这类特殊字符——单词只能由字母、数字以及-、_这类有限符号组成,带斜杠的字符串自然会被判定为非法输入。
根据你想要得到[test/a]形式的需求,这里有两种针对性的解决方案:
方案1:直接将字符串存入块
如果你的核心需求只是把"test/a"作为内容放进块里,不需要转换成单词类型,直接跳过to-word步骤即可:
b: [] append b "test/a"
执行后b的值为["test/a"],这是一个包含目标内容的块结构。
方案2:转换为路径类型后放入块
如果你想要块中呈现的是[test/a]这种原生语法形式(即元素是Rebol的路径类型),可以用to-path替代to-word:
b: [] append b to-path "test/a"
执行后b的值就是你想要的[test/a]。to-path专门用于处理带斜杠的字符串,将其转换为Rebol支持的路径类型,路径本身就天然支持斜杠分隔的格式。
内容的提问来源于stack exchange,提问作者user310291
相关产品推荐
相关产品推荐

