Multistrings (chuỗi rỗng được phân tách bằng chuỗi rỗng) là phổ biến trong API Windows. Một phương pháp tốt để chuyển đổi một multistring trở về từ một API thành một bộ sưu tập chuỗi C# và ngược lại là gì?Làm thế nào để bạn chuyển đổi multistring đến/từ bộ sưu tập chuỗi C#?
Tôi đặc biệt quan tâm đến việc xử lý thích hợp mã hóa ký tự (Windows XP sau này).
Phương pháp sau đây có vẻ không quan trọng đối với việc tạo nhiều câu, nhưng tôi không có ví dụ về giải mã một câu hỏi nhiều.
static string StringArrayToMultiString(
ICollection<string> stringArray
)
{
StringBuilder multiString = new StringBuilder();
if (stringArray != null)
{
foreach (string s in stringArray)
{
multiString.Append(s);
multiString.Append('\0');
}
}
return multiString.ToString();
}
Tôi nghĩ rằng \ 0 đã có trong chuỗi khi nó được gửi qua COM, có nghĩa là anh ta sẽ cần một \ 0 nhưng không phải là khác. – configurator
Vâng, đó là chính xác - khi một chuỗi được chuyển đến một API Win32, nó là null-chấm dứt. Vì vậy, không cần phải thêm \ 0 cuối cùng. Một chuỗi nhiều không được chứa chuỗi trống. Điều đó có nghĩa là một chuỗi rỗng "" thường là một multistring hợp pháp không có mục nhập nào. –
OK, cập nhật sau đó –