我想解析一个字符串,找到一(character, n)组中找到的前N个重复字符.
例如,for "ozzllluu"和sets("u"=> 2),("d"=> 2),("l"=> 3)和("r"=> 3)......我想找到"lll",因为它是3个字符,发生在两个"你"之前.
程序式解决方案:
Rebol []
seq-set: [#"u" 2 #"d" 2 #"l" 3 #"r" 3]
str: "ozzllluu"
lastchar: ""
cnt: 1
seq-char: ""
foreach char str [
either char = lastchar [
cnt: cnt + 1
if (select seq-set char) = cnt [
seq-char: char
break
]
][
cnt: 1
]
lastchar: char
]
either seq-char = "" [
print "no seq-char"
][
print join "seq-char " seq-char
]
Run Code Online (Sandbox Code Playgroud)
我如何使用parse规则做同样的事情?
简而言之:
parse 在(character,n)set中找到的前n个重复字符的字符串 这是使用Red's Parse的解决方案(也适用于R3):
seq-set: [2 #"u" | 2 #"d" | 3 #"l" | 3 #"r"]
rule: [any [set char seq-set break | skip]]
red>> parse "ozzllluu" rule
red>> char
== #"l"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |