如何在Perl中的给定索引处获取字符?

时间:2009-04-10 03:14:02

标签: perl string

如果我有一个Perl字符串:

$str = "Hello";

如何获得与charAt(index)类似的给定索引的字符?

4 个答案:

答案 0 :(得分:42)

使用长度为1的substr,如下所示:

$nth = substr($string, n-1, 1);

同时查找perlmonks以获取其他解决方案。

答案 1 :(得分:22)

$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

答案 2 :(得分:2)

其他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);

答案 3 :(得分:0)

要在第ith个索引处获取字符,请使用 substr 。 例如:$ str =“ Perl”; 要获取第二个索引字符,请打印substr($ str,2,2)。 这将给出输出r。