2017-01-15 8 views
0

Я хочу использовать 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 как-нибудь включать строки новой строки из исходной строки?

ответ

0

Существуют различные способы ввода новой строки в разных ОС. для Windows - \ г \ п, форма Mac - \ г, для Unix - \ п и Linux - \ п

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

var exp = new Regex (@ "(?: \ R \ n | [\ r \ n]) +");

var general = exp.Replace (test, Environment.NewLine);

+0

Извините, если я не понял. К сожалению, я не вступаю в новые строки, они происходят из других систем. Люди могут вводить эти описания в несколько разных операционных систем, поэтому я никогда не знаю характера новых строк. – Helena

+0

Существуют разные способы ввода новой строки в разных ОС. Windows is \ r \ n, Mac is \ r, Unix и Linux are \ n –

+0

Да, я знаю. Строка, которую я получаю, которую я хочу обработать, может содержать их все. Так, например, я хочу, чтобы кто-то мог вводить содержимое строки «описание» на своем Mac, и я должен быть в состоянии прочитать его и сохранить окончания строк в Windows описанным выше способом. Или любую другую комбинацию ОС. Кажется, что StringBuilder справляется с этим. Возможно, редактор Unity EditorGUIUtility.systemCopyBuffer просто недостаточно умен! – Helena