【发布时间】:2010-10-18 16:59:09
【问题描述】:
如果我有一个 Perl 字符串:
$str = "Hello";
如何在给定索引处获取类似于 charAt(index) 的字符?
【问题讨论】:
如果我有一个 Perl 字符串:
$str = "Hello";
如何在给定索引处获取类似于 charAt(index) 的字符?
【问题讨论】:
【讨论】:
$char = substr( $mainstring, $i , 1 );
是一种方法,可能是最清晰的。
如果您想要的是 numeric 值并且您打算这样做很多:
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
【讨论】:
ord(substr($mainstring, $i, 1))
其他 substr() 答案的推论是您也可以使用它来设置索引处的值。它支持这个作为左值或额外的参数。它也和 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 ),但建议使用后一种表示法,因为前者经常让新手感到困惑。
要获取第 i 个索引处的字符,请使用 substr。获取第二个索引字符,例如:
$str="Perl";
print substr($str,2,1).
这将给出输出r。
【讨论】: