Как я могу получить символ по заданному индексу в Perl? - PullRequest
36 голосов
/ 10 апреля 2009

Если у меня есть строка Perl:

$str = "Hello";

как я могу получить символ с заданным индексом, подобным charAt (index)?

Ответы [ 3 ]

42 голосов
/ 10 апреля 2009

Используйте substr с длиной 1, как в:

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

Также ищите perlmonks для других решений.

22 голосов
/ 10 апреля 2009
$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 голосов
/ 10 апреля 2009

Следствие для других ответов substr () состоит в том, что вы можете использовать его для установки значений также в индексе. Он поддерживает это как lvalue или с дополнительными аргументами. Это также очень похоже на соединение, что то же самое, но для массивов.

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...