この記事の目的
この記事では、
C#Interractiveで長い文字列を使うときのコツをまとめること
を目的としています。
本題
★問題になっていること
C# Interactiveは、C#を対話的に使うことができ、とても便利です。
ただ、長い文字列を表示するとき、以下のように「…」で省略されます。
new string('a', 10000) //output: //"aaaaaaaa <中略> aaaaaaaaaaaa...
対話的に処理を行っていき、
処理の最後に長い文字列をコピーしてどこかに貼り付けようとしたとき、
肝心の文字が省略されてしまっては元も子もありませんw
今回は、この問題の解決法をメモしていきます。
★解決方法
【解決法】クリップボードにコピーする
値を選択して右クリック→コピーするのではなく、
C# Interactiveの中でクリップボードにコピーするコードを実行します。
例は以下の通りです。
string target = new string('A', 100000); #r "System.Windows.Presentation" System.Windows.Clipboard.SetText(target);
これで、文字列のもれなくクリップボードにコピーすることができます。
★そもそもことの発端は?
今回の問題に直面したのは、アプリのテストを行っているときでした。
テストのため、base64形式に変換したファイルデータが必要でした。
複数回必要になるデータであれば、コンソールアプリを作ろうと思ったのですが、
初めの数回分のデータがあれば事足りたので、わざわざ作るのも・・・
ということで、C# Interactiveでサクッとデータを作ることにしました。
そして、そこで長い文字列のコピーという問題に出会いましたw
C# Interactiveで”長そうな文字列”を使うときには注意が必要ですね( ゚Д゚)
★【補足情報】最大表示文字数について
何文字まで「…」なしで表示することができるか検証してみました。
※環境の違いによるものは考慮していません。
※ダブルクォーテーション及び、”>”記号や空白については文字数カウントに含めていません。
new string('a', 1000) //表示結果:〇 //"aaaaaaaa <中略> aaaaaaaaaaaa new string('a', 1022) //表示結果:〇 //"aaaaaaaa <中略> aaaaaaaaaaaa new string('a', 1023) //表示結果:× //"aaaaaaaa <中略> aaaaaaaaaaaa... new string('a', 1024) //表示結果:× //"aaaaaaaa <中略> aaaaaaaaaaaa…
検証結果:
1023文字まではすべての文字が表示されます。
ただし、1023文字以降は「…」で省略されます。
※境界値である1023文字については、すべての文字が表示され、「…」も表示されます。
まとめ
C# Interactiveはやっぱり便利だった。
表示できる文字列は1023文字まで!
それを超える文字を表示、コピーしたいときは、Clipboardへ!