Trong Erlang khi bạn có danh sách các ký tự có thể in, một chuỗi của nó, nhưng một chuỗi cũng là danh sách các mục và tất cả các chức năng của danh sách có thể được áp dụng lên một chuỗi. Lý tưởng nhất, cấu trúc dữ liệu: chuỗi không tồn tại trong erlang.
Một phần mã của tôi cần phải chắc chắn rằng nội dung nào đó không chỉ là danh sách mà còn là một chuỗi. (Một chuỗi thực). Cần phải tách riêng các danh sách, ví dụ: [1,2,3,a,b,"josh"]
, từ chuỗi, ví dụ: "Muzaaya"
. Biểu thức bảo vệ is_list/1
sẽ hiển thị true
cho cả chuỗi và danh sách. Không có người bảo vệ nào như
và vì vậy điều này có nghĩa là tôi cần một đoạn mã sẽ đảm bảo rằng dữ liệu của tôi là một chuỗi. Chuỗi trong trường hợp này là danh sách chỉ có thể in được (chữ cái, cả hai chữ hoa và chữ thường) và có thể chứa các số, ví dụ: is_string/1
"Muzaaya2536 618 Joshua"
. tôi cần một đoạn mã (Erlang) mà sẽ kiểm tra cho tôi và đảm bảo rằng biến là một chuỗi, không chỉ là một danh sách. nhờphân biệt một chuỗi từ danh sách trong Erlang
Trả lời
Bạn có hai chức năng trong module io_lib
mà có thể hữu ích: io_lib:printable_list/1
và io_lib:printable_unicode_list/1
mà kiểm tra nếu đối số là một danh sách in latin1 hoặc unicode ký tự tương ứng.
cảm ơn @rvirding, đây là giải pháp tiêu chuẩn hơn! –
sử dụng isprint (3) định nghĩa của các ký tự in -
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.
bạn sẽ không thể sử dụng nó như một người bảo vệ, mặc dù.
nhờ @ butter71, điều này cũng hoạt động rất tốt ! –
Điều này làm việc cho bộ ký tự Latin1, nhưng điều quan trọng cần lưu ý là nó sẽ từ chối mã ký tự Unicode. – goncalotomas
- 1. Danh sách nhị phân thành Danh sách chuỗi - Erlang
- 2. Tạo danh sách trong Erlang
- 3. Erlang: làm phẳng một danh sách các chuỗi
- 4. Xác định xem một mục là một chuỗi hoặc một danh sách trong Erlang
- 5. Cách tìm kiếm một mục trong Danh sách trong Erlang?
- 6. Đúc từ danh sách danh sách chuỗi để liệt kê danh sách int trong python
- 7. Sắp xếp các bản ghi Erlang trong một danh sách?
- 8. Tìm kiếm danh sách phân biệt chữ hoa chữ thường
- 9. Danh sách chuỗi một chuỗi
- 10. Erlang danh sách kỷ lục mục
- 11. Danh sách phân biệt chữ hoa chữ thường
- 12. Tạo danh sách từ một chuỗi trong Clojure
- 13. Danh sách Erlang: chức năng index_of?
- 14. Erlang, danh sách hiểu cú pháp
- 15. Tìm một chuỗi chung trong danh sách các chuỗi
- 16. C# lấy danh sách từ một trường trong danh sách
- 17. Nhận danh sách phụ từ một danh sách trong Freemarker
- 18. Khớp mẫu không phân biệt chữ hoa chữ thường trên các danh sách chuỗi
- 19. Tìm kiếm một danh sách các chuỗi đối với bất kỳ phụ chuỗi từ một danh sách khác
- 20. Cách tạo Danh sách <T> từ một chuỗi được phân cách bằng dấu phẩy?
- 21. Cách viết các hàm danh sách Native Erlang trong CouchDB
- 22. Chuỗi dài nhất từ danh sách
- 23. Sắp xếp một danh sách từ một danh sách ID
- 24. python: tạo danh sách từ chuỗi
- 25. Chuyển đổi danh sách các danh sách thành chuỗi phân cách
- 26. Erlang: kết hợp mẫu nào hiệu quả hơn (danh sách)?
- 27. Chọn biệt Danh sách từ từ Array với LINQ
- 28. Tìm một giá trị trong danh sách {key, value} trong Erlang
- 29. Thay thế tất cả các từ trong danh sách từ bằng một chuỗi khác trong python
- 30. Chuyển đổi thuật ngữ erlang thành chuỗi, hoặc giải mã nhị phân erlang
Xem thêm http://stackoverflow.com/questions/2479713/determining-if-an-item-is-a-string-or-a-list-in-erlang – legoscia