나는 펄 문자열이있는 경우 :Perl의 주어진 인덱스에서 어떻게 문자를 얻을 수 있습니까?
$str = "Hello";
가 어떻게 수 charAt (인덱스)와 유사한 지정된 인덱스의 위치에있는 문자를 얻을 수 있습니까? 에서와 같이 길이 1
나는 펄 문자열이있는 경우 :Perl의 주어진 인덱스에서 어떻게 문자를 얻을 수 있습니까?
$str = "Hello";
가 어떻게 수 charAt (인덱스)와 유사한 지정된 인덱스의 위치에있는 문자를 얻을 수 있습니까? 에서와 같이 길이 1
$char = substr($mainstring, $i , 1);
한 가지 방법은 아마도 가장 명확 할 것입니다.
것은 당신이 원하는 있었는지하면하면 숫자 값이고이 많이 할 것을 예정했다 :
print join ",", unpack("W*","hello") ;
# 104,101,108,108,111
적절한 유니 코드/UTF8의 경우 :
unpack("W*","hello")
는 char 값의 배열을 돌려줍니다 쓸만한 것들
use utf8;
unpack("U*","hello\0ƀ\n")
# 104,101,108,108,111,0,384,10
코올 다른 substr() 대답에 대한 lary는 에 인덱스를 사용하여 값을 설정할 수도 있습니다. 그것은 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);
누군가는'substr (x, y, z) = foo'가'substr (x, y, z, foo)'와 동일하다는 것을 지적해야하지만, 전자는 종종 초보자에게 혼란을주기 때문에 후자의 표기법을 권장합니다. –
방금 했어! 나는 또한 "기본적으로 같은 말"이라고 생각했다. 나는이 예제를보고있는 초보자가 substr에 대한 pod 페이지를 실행하고 LVALUE 마술에 주목하고 LVALUE 양식이 이상하고 무서운 4 가지 형식을 사용한다고 가정합니다. 아마 신생아에 대한 믿음이 너무 많습니까? – jettero
또는 단지'ORD (SUBSTR ($의 mainstring, $ I, 1))' –
것은 당신이 한 문자의 값을 할 때 일반적으로, 당신은 그들 모두의 값을 원하고 통해 반복이다 ord (substr())는 언팩 (unpack) 변형보다 덜 효율적이고, 읽기가 어렵고, 디버그하기가 어려울 것입니다. –