my $string=q/ man , girl, woman, boy, "man,woman", "girl,boy"/ ;
콤마(,) 를 기준으로 각 단어를 나눌려면 어떻게 해야할까?
이때, 따옴표(")로 묶여있는 단어 사이의 콤마는 무시 한다.
나누어
@result=( 'man', 'girl', 'woman', 'boy', 'man,woman', 'girl,boy' )
6개의 element로 저장하는 것이 최종 목표.
내 답은 아래와 같다. 더 깔끔하고, 간결한 코드가 있겠지?
my @result;
map { /"/?push @result,$_:push @result, split /,/,$_ } split /(".*?")/, $string;
ruby로 한다면...
ReplyDeletea = "man, girl, woman, boy, 'man,woman', 'girl,boy'"
result = a.split(/,[^\"\S+,\S+\"]/)
=> ["man", "girl", "woman", "boy", "\"man,woman\"", "\"girl,boy\""]
이거 때문에 아침부터 5분 허비했음!!
CPAN 모듈 이용,
ReplyDeleteuse Test::ParseWords;
my @set=quotewords ',',0, $string ;