Nếu tôi có một chuỗi như "123"
, làm thế nào tôi có thể chia nó thành một mảng, trông giống như ["", "1", "2", "3", ""]
? Nếu tôi sử dụng ToCharArray()
Biểu tượng cảm xúc đầu tiên được chia thành 2 ký tự và biểu tượng thứ hai thành 7 ký tự.Làm cách nào để tách chuỗi Unicode thành nhiều ký tự Unicode trong C#?
Cập nhật
Giải pháp bây giờ trông như thế này:
public static List<string> GetCharacters(string text)
{
char[] ca = text.ToCharArray();
List<string> characters = new List<string>();
for (int i = 0; i < ca.Length; i++)
{
char c = ca[i];
if (c > 65000) continue;
if (char.IsHighSurrogate(c))
{
i++;
characters.Add(new string(new[] { c, ca[i] }));
}
else
characters.Add(new string(new[] { c }));
}
return characters;
}
Xin lưu ý rằng, như đã đề cập trong các ý kiến, nó không hoạt động cho các biểu tượng cảm xúc trong gia đình. Nó chỉ hoạt động cho các biểu tượng cảm xúc có 2 ký tự trở xuống. Đầu ra của ví dụ sẽ là: ["", "1", "2", "3", "", "", "", ""]
' + + + = ' vui nhộn, không biết rằng – fubo
Điều này xảy ra như thế nào? Biểu tượng cảm xúc dành cho công cụ hiển thị văn bản. Xử lý văn bản có chứa biểu tượng cảm xúc tương đương với niềm vui khi xử lý văn bản tiếng Trung. Hoặc Zalgo, nếu bạn muốn thử thách thực sự :) Nhận ra người thay thế không phải là khoa học tên lửa khác, hãy sử dụng Char.IsLowSurrogate(). –