3

のuser.configファイルはProperties.Settings、<value />タグを使用して空の文字列値を正しく処理できるようですが、1つ以上のスペースのみで構成される値(たとえば、 "")は...として保存されません。

    <value>    </value>

むしろ...

     <value>
     </value>

したがって、CRLFと「インデント」スペースが含まれます。

1つ以上のスペース文字の設定を保存するにはどうすればよいですか?

4

3 に答える 3

3

空白が重要な場合は、CDATAを使用してください。

<value><![CDATA[    ]]></value>
于 2013-01-22T16:23:04.440 に答える
2

これらの提案に感謝しますが、どちらも問題を解決しません。CDATA を使用すると、次にプロパティがプログラムにロードされたときに (例: string prop = Properties.Settings.Default.MyProp)、CDATA 文字列が取得されます (例: prop is now "<![CDATA...")。を使用しても同じことが起こり&nbsp;ます。ちなみに、PSDSave() は &、<、および > を&amp;, &lt;, and &gt;エンティティに自動変換します。

基本的に、文字列 (および文字) 設定は、null であるか、少なくとも 1 つの非スペース文字が含まれている場合、正しく保存および復元されますが、1 つ以上のスペースの文字列 (または 1 つのスペースの文字) は正しく保存されません。

この問題は、ユーザーが文字列を行インデントのプレフィックスとして使用できるようにするプログラムで発生しました (例:"----", " "など)。それ以来、このスペース文字列のバグを回避するためにプログラムを変更しましたが、スペース文字列は依然として完全に有効な「プロパティ」であるべきだと私には思えます!

于 2013-01-23T18:39:25.813 に答える