my @r = split("", "hi");
say @r.elems;
--> output: 4
은 처음에 배열을 추가하고 끝에 다른 두 개의 요소를 추가합니다.Perl6 스플릿 함수가 배열에 여분의 요소를 추가합니다.
나는이 문제를 해결하기 위해 모든 나누기 후에 이동 및 팝을해야합니다.
문자열을 분할하는 더 좋은 방법이 있습니까?
my @r = split("", "hi");
say @r.elems;
--> output: 4
은 처음에 배열을 추가하고 끝에 다른 두 개의 요소를 추가합니다.Perl6 스플릿 함수가 배열에 여분의 요소를 추가합니다.
나는이 문제를 해결하기 위해 모든 나누기 후에 이동 및 팝을해야합니다.
문자열을 분할하는 더 좋은 방법이 있습니까?
빈 문자열로 분할하는 경우 은 문자열의 앞뒤에 빈 문자열이 있으므로 반환 된 목록의 시작과 끝에 빈 요소를 가져옵니다. 당신이 원하는 무엇
완전히 기능적으로 기입, 매개 변수없이 .comb
입니다 :
"hi".comb.elems.say; # 2
더 많은 정보를 원하시면 https://docs.perl6.org/routine/comb#(Str)_routine_comb를 참조하십시오. 당신은 당신이 문자 옆에 일치하는 정규식 /<|wb>/
를 사용하는 것처럼이 동일 구분 기호를위한 빈 str을 “”
를 사용할 때
그 이유는. 따라서 첫 번째 문자 앞에 일치하고 마지막 문자 뒤에 일치합니다. Perl 5는이 경우에 (그리고이 경우에만)이 "여분"문자열을 제거합니다.이 문자열은 혼동이있는 곳에 위치합니다. 펄 6 대신 무엇을
명시 적으로 :skip-empty
값
'hi'.split('') :skip-empty
'hi'.split('', :skip-empty)
split("", "hi") :skip-empty
split("", "hi", :skip-empty)
또는 당신이 실제로 원하는 지정을 사용하여 다음을 수행 할 수 있습니다
'hi'.comb(/./)
'hi'.comb(1)
'hi'.comb
comb(/./, 'hi')
comb( 1, 'hi')