2017-01-15 15 views
0

StringBuilderを使用していくつかの文字列をマージし、それらをUnityEngineのEditorGUIUtility.systemCopyBufferに渡したいとします。文字列の1つに改行文字が含まれていますが、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によって印刷され、予想される出力は、次のとおりです。

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

だから、StringBuilderのは、それを処理することができます。しかし、テキストを例えばメモ帳は、それは次のようになります。

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

ので、システムのコピーバッファは、StringBuilderのが追加されます改行ではなく、元の文字列に存在するものを扱うことができます。 EditorGUIUtility.systemCopyBufferに元の文字列からの改行を何らかの形で含めることはできますか?

答えて

0

異なるOSに改行を入力する方法はいくつかあります。 Windowsの場合 - \ R \ nは、フォームマック - Unixのために\ rを、 - \ n、およびLinuxの - \ nは

利用Environment.NewLine代わりの\ nは

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

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

+0

私が不明な場合は申し訳ありません。残念ながら、私は改行を入力しない、彼らは他のシステムから来ています。人々は複数の異なるオペレーティングシステムでこれらの記述を入力することができるので、改行の性質はわかりません。 – Helena

+0

異なるOSに改行を入力する方法はいくつかあります。 Windowsは\ r \ n、Macは\ r、UnixとLinuxは\ n –

+0

はい、わかっています。私が扱う文字列には、それらをすべて含めることができます。例えば、誰かが自分のMacに文字列 "description"の内容を入力できるようにしたいのですが、それを読んで、上記の方法でWindows上で行末を保持できるはずです。または他のOSの組み合わせ。 StringBuilderはそれを処理できるようです。多分UnityのEditorGUIUtility.systemCopyBufferは単に十分スマートではありません:) – Helena

関連する問題