Unity EditorGUIUtility.systemCopyBuffer, StringBuilder добавляет строку, содержащую символы новой строки

Я хочу использовать StringBuilder для объединения нескольких строк, а затем передать их EditorGUIUtility.systemCopyBuffer в UnityEngine. Одна из строк содержит символы новой строки, но они не присутствуют при вставке содержимого EditorGUIUtility.systemCopyBuffer. Я не могу добавить символы новой строки сам, так как не знаю, сколько их и где.

// 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 descriptionnwith 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.Войдите в консоль Unity, is:

Name: A name
Description: A long description
with multiple lines.

Поэтому StringBuilder может справиться с этим. Но когда я вставляю текст, например, в блокнот, он выглядит так:

Name: A name
Description: A long descriptionwith multiple lines.

Таким образом, буфер копирования системы может обрабатывать новые строки, которые StringBuilder добавляет, но не те, которые присутствуют в исходной строке.
Могу ли я сделать EditorGUIUtility.systemCopyBuffer включить новые строки из исходной строки каким-то образом?

1 ответ

  1. Есть разные способы ввода newline в разных ОС.
    Для Windows — \r\n, форма Mac — \r, для Unix — \n и Linux — \n

    Использовать Environment.NewLineвместо \n .

    var exp= новое регулярное выражение (@» (?: \r\n / [\r\n])+»);

    var general = exp.Заменить (test, Environment.новая строка);