有一个类似措辞的问题,但我认为这略有不同。
基本上,假设我有这个字符串:
" aa{bb{dccd
"
在这里,我想在最后一个大括号处拆分字符串{
;并将零件作为数组返回。我可以使用以下方法轻松找到该字符的位置(从 0 开始的索引)rindex
:
perl -e '
$aa="aa{bb{dccd" ;
$ri = rindex($aa, "{") ;
print "$ri\n"; '
5
...鉴于我不是 Perl 编码器,我首先想到的是使用类似. 不幸的是,这不是正确的语法——$str = split($aa, 3)
split
将正则表达式作为第一个参数(匹配的内容),将字符串作为第二个参数——并且它不使用整数位置索引作为参数。
我发现了类似Perl Guru 论坛的帖子:Perl Programming Help: Intermediate: split or splice string on char count? ,建议substr
在类似的上下文中使用;但是,我必须根据substr
上面的示例编写两个 s 来填充列表,因此我宁愿听到有关 substr 的替代方案。
基本上,如果匹配第 N 个字符的位置的问题可以表示为正则表达式匹配,那么split
它也可以工作 - 所以这将是我的主要问题。但是,我也很想知道是否有 Perl 内置函数可以接受指定字符位置的整数列表/数组,并返回包含拆分部分的数组。
编辑:
总结以上内容-我想要字符索引,因为我想将它们打印出来以进行调试;同时,使用它们将字符串拆分为数组 - 但不使用substr
s.
EDIT2:我刚刚意识到我从 OP 中遗漏了一些东西——也就是说,在我正在处理的问题中,我必须首先检索字符索引(通过 rindex 或其他方式);然后我必须对它们进行计算(因此它们可能会增加或减少) - 只有这样我才应该拆分字符串(基于新的索引值)。可能是我最初的示例太简单了,并没有过多地表达对索引/字符位置的关注(更不用说我首先想到的split
暗示字符索引 - 但我真的不记得它来自哪种编程语言从:)
)