Я хочу использовать StringBuilder для объединения нескольких строк, а затем предоставить их EditorGUIUtility.systemCopyBuffer в UnityEngine. Одна из строк содержит символы новой строки сама по себе, но их нет, когда я вставляю содержимое EditorGUIUtility.systemCopyBuffer. Я не могу самостоятельно добавлять символы новой строки, поскольку я не знаю, сколько их там или где.Unity EditorGUIUtility.systemCopyBuffer, StringBuilder добавляет строку, которая содержит символы новой строки
// This string is in my real code unknown to me.
// I also don't know the format of the newline characters.
string description = "A long description\nwith multiple lines.";
var builder = new StringBuilder();
builder.Append("Name: ");
builder.AppendLine(someObject.Name);
builder.Append("Description: ");
builder.AppendLine(description);
Debug.Log(builder.ToString());
EditorGUIUtility.systemCopyBuffer = builder.ToString();
Ожидаемый выход, который печатается debug.log в консоли Unity, является:
Name: A name
Description: A long description
with multiple lines.
Так StringBuilder может справиться с этим. Но когда я вставляю текст в, например, блокнота, это выглядит следующим образом:
Name: A name
Description: A long descriptionwith multiple lines.
Таким образом, системный буфер копирования может обрабатывать новые строки, что добавляет StringBuilder, но не те, присутствующие в исходной строке. Могу ли я сделать EditorGUIUtility.systemCopyBuffer как-нибудь включать строки новой строки из исходной строки?
Извините, если я не понял. К сожалению, я не вступаю в новые строки, они происходят из других систем. Люди могут вводить эти описания в несколько разных операционных систем, поэтому я никогда не знаю характера новых строк. – Helena
Существуют разные способы ввода новой строки в разных ОС. Windows is \ r \ n, Mac is \ r, Unix и Linux are \ n –
Да, я знаю. Строка, которую я получаю, которую я хочу обработать, может содержать их все. Так, например, я хочу, чтобы кто-то мог вводить содержимое строки «описание» на своем Mac, и я должен быть в состоянии прочитать его и сохранить окончания строк в Windows описанным выше способом. Или любую другую комбинацию ОС. Кажется, что StringBuilder справляется с этим. Возможно, редактор Unity EditorGUIUtility.systemCopyBuffer просто недостаточно умен! – Helena