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.

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    教学计划-物理必修二
    小白学习Python之路---开发环境的搭建
    解决pycharm连接MySQL 1366报错的问题
    Leetcode 118 杨辉三角
    Leecode 70 爬楼梯
    RabbitMQ
    Leetcode 38 报数
    Leecode 69 x的平方根
    select 实现server I/O多路复用通信
    Leetcode 67 二进制求和
  • 原文地址:https://www.cnblogs.com/mmtinfo/p/14684420.html
Copyright © 2011-2022 走看看