如果我有一个Perl字符串:
$str = "Hello";
如何在给定索引处获取一个字符,类似于charAt(index)的功能?
$char = substr( $mainstring, $i , 1 );
这是一种做法,可能是最清晰的方法。
如果您想要的是数值,并且您打算经常这样做:
unpack("W*","hello")
返回一个Char值的数组:
print join ",", unpack("W*","hello") ;
# 104,101,108,108,111
为了正确处理Unicode/Utf8,您可能希望使用
use utf8;
unpack("U*","hello\0ƀ\n")
# 104,101,108,108,111,0,384,10
除了其他substr()答案之外,您还可以使用它在索引处设置值。它支持lvalue或带有额外参数的方式。它也非常类似于splice,但是适用于数组。
$string = "hello";
substr($string, 2, 2) = "this works?";
substr($string, 2, 2, "same thing basically");
@a = qw(s t r i n g s a n d t h i n g s);
@cut_out = splice(@a, 2, 2);
@cut_out = splice(@a, 2, 2, @replacement);
substr( x, y, z ) = foo
等同于 substr( x, y, z, foo )
,但是后者的表示法更受推荐,因为前者经常会让新手感到困惑。 - Kent Fredric要获取第i个索引处的字符,请使用substr
。例如,要获取第2个索引处的字符:
$str="Perl";
print substr($str,2,1).
r
。
ord(substr($mainstring, $i, 1))
。 - Keith Thompson