Bạn có thể bảo vệ dấu khoảng trắng trong strcat() hoặc tương tự chức năng bằng cách đặt nó vào một ô.
str = strcat({'red '}, {'yellow '}, {'white '})
str = str{1}
Không hữu ích trong ví dụ cơ bản này. Nhưng nếu bạn kết thúc việc thực hiện các hoạt động "vectơ" trên các chuỗi, nó rất tiện dụng. Nối mảng thường xuyên không thực hiện việc nối 1-đến-nhiều mà strcat thực hiện.
strs = strcat({'my '}, {'red ','yellow ','white '}, 'shirt')
Gắn 'my' vào ô mặc dù đó là một chuỗi duy nhất sẽ giữ khoảng trắng. Lưu ý rằng bạn phải sử dụng biểu mẫu {} thay vì gọi hàm cellstr(), chính nó sẽ loại bỏ khoảng trắng ở cuối. Điều này có thể là do Matlab có hai dạng biểu diễn danh sách các chuỗi: như một mảng cellstr, trong đó tất cả khoảng trống là quan trọng, và như một mảng char 2 chiều trống, với mỗi hàng được coi là một chuỗi, và khoảng trắng cuối bị bỏ qua. Dạng cellstr giống nhất các chuỗi trong Java và C; biểu mẫu char 2-D có thể hiệu quả hơn nếu bạn có nhiều chuỗi có độ dài tương tự. Chức năng thao tác chuỗi của Matlab là đa hình trên hai biểu diễn, và đôi khi thể hiện sự khác biệt như thế này. Một char charalal như 'foo' là một trường hợp một chuỗi thoái hóa của dạng char 2-D, và các chức năng của Matlab coi nó như vậy.
Nguồn
2009-09-21 20:06:03
@ # $ @! # $ @! khác gotcha mâu thuẫn giữa Matlab và C.> :( –
Cách giải quyết nhanh: 'cstrcat (" anh "," l "," lo ")', giữ gìn không gian. Nguồn: http://stackoverflow.com/a/14025999/ 445131 –
Có rất nhiều quyết định thiết kế ngu ngốc trong Matlab, nhưng tôi đã không mong đợi một cái gì đó đơn giản như thế này là một vấn đề, quá! – houbysoft