我想删除字符串中的所有字符,除了:
-或_或.A 通 Za 通 z0 至 9在linux命令行上,使用sed我会这样做:
$ echo "testing-#$% yes.no" | sed 's/[^-_.a-zA-Z0-9 ]//g'
Run Code Online (Sandbox Code Playgroud)
输出:
testing- yes.no
Run Code Online (Sandbox Code Playgroud)
如何使用PARSE在Red语言中实现相同的效果?我在看:
但是,我无法编纂它.我试过了:
>> parse "mystring%^&" [#a - #z #A - #Z #0 - #9]
== false
>> parse "mystring%^&" [#a-#z#A-#Z#0-#9]
== false
Run Code Online (Sandbox Code Playgroud)
首先注意ISSUE之间的区别!和CHAR!
#a #b #c ; issues
#"a" #"b" #"c" ; chars
Run Code Online (Sandbox Code Playgroud)
然后,您可以为要保留的字符或要放弃的字符建立字符集(BITSET!类型).我们在这里做前者:
good-chars: charset [#"a" - #"z" #"A" - #"Z" #"0" - #"9"]
Run Code Online (Sandbox Code Playgroud)
现在我们有了这个,我们可以用不同的方式来解决这个问题:
一个相当基本的解析循环 - 跳过任何good-chars并删除其他任何东西.
parse "mystring%^&" [any [some good-chars | remove skip]]
Run Code Online (Sandbox Code Playgroud)
希望不言自明:
remove-each char "mystring%^&" [not find good-chars char]
Run Code Online (Sandbox Code Playgroud)
首先,字符必须用引号引起来,#ais issue!,char!is #"a"。您的规范是正确的,但您必须将其传递给charset函数,以使其形成bitset!形式。
然后你可以对parse你的字符串进行keeping 有效字符和skiping 无效字符:
>> chars: charset [#"a" - #"z" #"A" - #"Z" #"0" - #"9"]
== make bitset! #{000000000000FFC07FFFFFE07FFFFFE0}
>> rejoin parse "mystring%^&asdf" [collect some [keep chars | skip]]
== "mystringasdf"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |