gpt4 book ai didi

rebol - 如何在 Rebol 中的特定字符处拆分字符串

转载 作者:行者123 更新时间:2023-12-04 18:10:06 26 4
gpt4 key购买 nike

我还没有弄清楚如何以更简洁的方式拆分字符串。

 ref: copy/part (find line "#") -15
rest2: copy/part (skip (find line "#") 1) 450

-15 为开始,450 为结束。

这不好,因为我把值(value)。

什么是正确的解决方案?

最佳答案

预先警告:在 Rebol 中有许多不同的方法可以实现这一点。所以你可能会得到很多不同的建议。

首先,让我们坚持使用 FIND 的原始方法。

当您对系列使用 FIND 时,您将获得基础系列数据的新 View ,该 View 位于与系列数据开头不同的偏移量处。

让我们从一些示例数据开始:

>> line: copy "this is foo#and here comes a long bar"
== "this is foo#and here comes a long bar"

让我们找到 #该行中的字符,并将结果称为 POS:
>> pos: find line "#"
== "#and here comes a long bar"

如您所见,这基本上已经为您提供了拆分的第二部分(您称之为 REST2)。您只需跳过分隔符本身(然后复制结果字符串,使其独立于原始 LINE 字符串):
>> rest: copy next pos
== "and here comes a long bar"

为了提取初始部分,您可以使用 COPY/part 的一个很好的功能。 “/part”改进的文档(尝试 help copy )说:“限制到给定的长度 或位置 ”(强调我的)。我们已经拥有作为 POS 的便利位置。所以:
>> ref: copy/part line pos
== "this is foo"

你去吧!完整代码:
pos: find line "#"
ref: copy/part line pos
rest: copy next pos

作为引用,这里有一个基于 PARSE 的方法:
parse line [copy ref to "#" skip copy rest to end]

我会让这件事成立,不再做进一步的解释。如果您想了解更多关于 PARSE 的信息,可以从令人尊敬的 "Parsing" chapter in the REBOL/Core Users Guide 开始。 (最初是为 REBOL 2.3 编写的,但在当前的 REBOL 2 和 3 版本中,基本原理仍然大致相同)。

最后附注:而不是单项字符串 "#"你也可以使用一个写成 #"#" 的字符。在雷 bool 。

关于rebol - 如何在 Rebol 中的特定字符处拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16212413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com