Rebol:如何将字符串拆分为字符

时间:2019-07-10 15:42:01

标签: parsing rebol rebol2

使用Rebol如何将字符串拆分为字符(不使用带有循环的类c方法)?我使用的是版本2.7.8.2.5,它没有split方法。

str:“今天是星期一”

我想将以上内容拆分为:

['T''o''d''a''y''''i's''''M'o'n'd''a''y']

Parse方法似乎只能将一个句子拆分为组成词。

谢谢。

3 个答案:

答案 0 :(得分:4)

如果您不想使用循环,那么有一个妙招:

>> head extract/into str 1 []  
== [#"T" #"o" #"d" #"a" #"y" #" " #"i" #"s" #" " #"M" #"o" #"n" #"d" #"a" #"y"]

OTOH,string!已经是一系列char!的值,因此将其分解成这样的字符并不会带来任何明显的好处。

答案 1 :(得分:3)

在某些Rebol(不是Rebol2)中,您可以使用MAP-EACH来执行此操作,例如映射每个ch str [ch]

在Rebol2中,COLLECT和KEEP是构建块的相当通用和强大的方法:

>> collect [foreach c str [keep c]]
== [#"T" #"o" #"d" #"a" #"y" #" " #"i" #"s" #" " #"M" #"o" #"n" #"d" #"a" #"y"]

我给你一个,让其他人列出更快的方法的无限性。 :-)

答案 2 :(得分:0)

取决于您是否要获取长度为1的单个字符或字符串,也可以使用以下规则进行解析

>> str: "Today is Monday"
== "Today is Monday"
>> collect [  parse/all str [ some [ copy x  skip (keep x)    ]     ]]
== ["T" "o" "d" "a" "y" " " "i" "s" " " "M" "o" "n" "d" "a" "y"] 
>> collect [  parse/all str [ some [  x:  skip (keep x/1)    ]     ]]
== [#"T" #"o" #"d" #"a" #"y" #" " #"i" #"s" #" " #"M" #"o" #"n" #"d" #"a" #"y"]