Erlang에서 인쇄 가능한 문자의 목록이 있으면 그 문자열이지만 문자열도 항목 목록이므로 목록의 모든 기능을 문자열에 적용 할 수 있습니다. 이상적으로, 데이터 구조 : 문자열은 erlang에 존재하지 않습니다.
내 코드의 일부는 무언가가 목록 일뿐만 아니라 문자열이라는 것을 알아야합니다. (실제 문자열). 예 : [1,2,3,a,b,"josh"]
. "Muzaaya"
. 가드 표현 is_list/1
은 문자열과 목록 모두에 대해 true
이라고 표시됩니다.
과 같은 가드가 없으므로 코드 스 니펫이 있어야 내 데이터가 문자열인지 확인할 수 있습니다. 이 경우 문자열은 인쇄 가능 (알파벳순, 두 경우 모두, 위와 아래)의 목록이며 숫자 (예 : is_string/1
"Muzaaya2536 618 Joshua"
)를 포함 할 수 있습니다. 나를 확인하고 변수가 문자열이 아니라 목록인지 확인하는 코드 스 니펫 (Erlang)이 필요합니다. 감사Erlang의 목록에서 문자열을 구별합니다.
답변
당신은 도움이 될 수있는 모듈 io_lib
의 두 가지 기능을 가지고 : io_lib:printable_list/1
및 io_lib:printable_unicode_list/1
하는 테스트 인수가 문자를 각각 인쇄 라틴 또는 유니 코드의 목록입니다 경우.
감사합니다. @rvirding, 이것은 더 표준적인 해결책입니다! –
인쇄 가능한 문자의 isprint (3) 정의를 사용하여 -
isprint(X) when X >= 32, X < 127 -> true;
isprint(_) -> false.
is_string(List) when is_list(List) -> lists:all(fun isprint/1, List);
is_string(_) -> false.
는하지만, 가드로 사용할 수 없습니다.
thanks @ butter71, 이것도 아주 잘 작동합니다 ! –
Latin1 문자 집합에 대해 작동하지만 유니 코드 문자 코드를 거부한다는 점에 유의해야합니다. – goncalotomas
- 1. Erlang의 {key, value} 목록에서 값 찾기
- 2. Erlang의 PID 목록
- 3. Erlang의 'zip'
- 4. erlang의 hash_hmac
- 5. Erlang의 오류보고
- 6. Erlang의 decodeURIComponent
- 7. Erlang의 문자열 목록에 문자열 추가
- 8. PackageMaker는 PPC와 인텔을 구별합니다.
- 9. 2 개의 ImageViews를 구별합니다.
- 10. 은 스캐너와 키보드를 구별합니다.
- 11. 탭과 스크롤을 구별합니다 - iOS
- 12. mysql_field_type은 varchar와 텍스트를 구별합니다.
- 13. 추적과 일반 쿠키를 구별합니다.
- 14. nowjs의 두 클라이언트를 구별합니다.
- 15. Erlang의 프로세스 밸런싱
- 16. Erlang의 프로세스 중단
- 17. Erlang의 예외 오류
- 18. erlang의 튜플에있는 값 연결하기
- 19. erlang의 inet_addr 기능
- 20. Erlang의 튜플에서 키 바꾸기
- 21. CouchDB : Erlang의 map-reduce
- 22. Erlang의 텍스트 압축
- 23. Erlang의 Postgresql 연결 풀링
- 24. 문자열을 분할하고 Groovy의 목록에서 일치하는 분할기를 유지합니다.
- 25. 매번 목록에서 30 자의 문자열을 가져옵니다.
- 26. 목록에서 문자열을 사용하여 wxPython에서 다른 창 열기
- 27. Erlang 목록에서 문자열을 가져 오는 방법
- 28. 목록에서 문자열을 잡고 다른 목록에 저장 하시겠습니까?
- 29. update_attributes rails는 생성과 업데이트를 구별합니다.
- 30. box2d의 충돌 표면 방위를 구별합니다.
또한보십시오 http://stackoverflow.com/questions/2479713/determining-if-an-item-is-a-string-or-a-list-in-erlang – legoscia