【问题标题】:Substring with offset going reverse偏移量反向的子字符串
【发布时间】:2019-12-07 08:50:10
【问题描述】:

我查看了 Perl 中 substr 的文档,看到“偏移”是开始的位置,“长度”是多长时间。如果 'length' 为负数,那就是从字符串右端离开的字符数。如何在“偏移”之前获得子字符串?示例

my $string = "HelloWorld";
my $sub = someFunction(string=$string, offset=5, lengthBefore=2); # I know this is not Perl syntax for sub-routine but wanted to show the inputs I need
print "$sub\n";

我想得到

oW

在 Perl 中是否有执行此操作的函数?任何帮助将不胜感激!谢谢。

【问题讨论】:

  • Re "如何在 'offset' 之前得到一个子字符串?",从技术上讲,这不是位置 5 之前的 2;那是位置 6 之前的 2。这是一个令人困惑的界面。
  • ($string =~ /^..{5}(?<=(.{2}))/s)[0]
  • @ikegami 对不起,我的意思是说我想要一个像 substr 这样的子例程,但方向相反。因为使用 substr($string, 5, 2) 会给出“Wo”。嗯,现在我想起来了,可能不是最好的示例字符串......但是谢谢!会接受你的答案!

标签: string perl substring


【解决方案1】:
sub someFunction {
   my ($s, $i, $j) = @_;
   my $start = $i-$j+1;
   $start = 0 if $start < 0;
   my $length = $i-$start+1;
   return substr($s, $start, $length);
}

sub someFunction {
   my ($s, $i, $j) = @_;
   return substr(substr($s, 0, $i+1), -$j);
}

假设someFunction("012345", 2, 4) 应该返回012

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2012-02-13
    • 2017-05-10
    相关资源
    最近更新 更多