zoukankan      html  css  js  c++  java
  • perl substr

    substr EXPR,OFFSET,LENGTH,REPLACEMENT
    substr EXPR,OFFSET,LENGTH
    substr EXPR,OFFSET
    Extracts a substring out of EXPR and returns it. First character
    is at offset zero. If OFFSET is negative, starts that far back
    from the end of the string. If LENGTH is omitted, returns
    everything through the end of the string. If LENGTH is negative,
    leaves that many characters off the end of the string.

    my $s = "The black cat climbed the green tree";
    my $color = substr $s, 4, 5; # black
    my $middle = substr $s, 4, -11; # black cat climbed the
    my $end = substr $s, 14; # climbed the green tree
    my $tail = substr $s, -4; # tree
    my $z = substr $s, -4, 2; # tr

    You can use the "substr" function as an lvalue, in which case EXPR
    must itself be an lvalue. If you assign something shorter than
    LENGTH, the string will shrink, and if you assign something longer
    than LENGTH, the string will grow to accommodate it. To keep the
    string the same length, you may need to pad or chop your value
    using "sprintf".

    If OFFSET and LENGTH specify a substring that is partly outside
    the string, only the part within the string is returned. If the
    substring is beyond either end of the string, "substr" returns the
    undefined value and produces a warning. When used as an lvalue,
    specifying a substring that is entirely outside the string raises
    an exception. Here's an example showing the behavior for boundary
    cases:

    my $name = 'fred';
    substr($name, 4) = 'dy'; # $name is now 'freddy'
    my $null = substr $name, 6, 2; # returns "" (no warning)
    my $oops = substr $name, 7; # returns undef, with warning
    substr($name, 7) = 'gap'; # raises an exception

    An alternative to using "substr" as an lvalue is to specify the
    replacement string as the 4th argument. This allows you to replace
    parts of the EXPR and return what was there before in one
    operation, just as you can with "splice".

    my $s = "The black cat climbed the green tree";
    my $z = substr $s, 14, 7, "jumped from"; # climbed
    # $s is now "The black cat jumped from the green tree"

    Note that the lvalue returned by the three-argument version of
    "substr" acts as a 'magic bullet'; each time it is assigned to, it
    remembers which part of the original string is being modified; for
    example:

    my $x = '1234';
    for (substr($x,1,2)) {
    $_ = 'a'; print $x," "; # prints 1a4
    $_ = 'xyz'; print $x," "; # prints 1xyz4
    $x = '56789';
    $_ = 'pq'; print $x," "; # prints 5pq9
    }

    With negative offsets, it remembers its position from the end of
    the string when the target string is modified:

    my $x = '1234';
    for (substr($x, -3, 2)) {
    $_ = 'a'; print $x," "; # prints 1a4, as above
    $x = 'abcdefg';
    print $_," "; # prints f
    }

    Prior to Perl version 5.10, the result of using an lvalue multiple
    times was unspecified. Prior to 5.16, the result with negative
    offsets was unspecified.

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    持续集成 最佳实践 研讨会(1月25日 广州)
    Selenium自动化测试项目案例实践公开课
    自动化测试管理平台ATMS(V2.0.3_8.28)下载
    自动化测试管理平台ATMS(V2.0.2_8.19)下载
    最近的免费软件测试课程
    Ranorex入门指南
    圆满完成Selenium自动化测试周末班培训课程!
    自动化测试管理平台ATMS(V2.0.1_8.12)下载
    GradNet: Gradient-Guided Network for Visual Object Tracking阅读笔记
    Distilling Object Detectors with Fine-grained Feature Imitation阅读笔记
  • 原文地址:https://www.cnblogs.com/mmtinfo/p/14684420.html
Copyright © 2011-2022 走看看