1

私はいくつかの文字列操作を行おうとしていますが、複数行の文字列を取得しList<String>、分割して作成する必要があり\r\nます。これにより、文字列で見つかった行のリストが表示されます。

ただし、Regex.Splitを実行した後、すべての行が。
"でエスケープされた行になってしまい\ます。

たとえば、入力文字列のスニペットは次のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<g2s:g2sMessage xmlns:g2s="http://www.gamingstandards.com/g2s/schemas/v1.0.3">
   <g2s:g2sBody g2s:dateTimeSent="2012-11-06T09:12:38.006-08:00" g2s:egmId="RBG_1234"
                g2s:hostId="1">
      <g2s:communications g2s:commandId="37102" g2s:dateTime="2012-11-06T09:12:38.004-08:00"
                          g2s:deviceId="1"
                          g2s:errorCode="G2S_none"

この文字列をList<String>usingに分割するために次のことを行うと:

List<string> lines = new List<string>(Regex.Split(message, "\r\n"));

結果は次のとおりです。

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<g2s:g2sMessage xmlns:g2s=\"http://www.gamingstandards.com/g2s/schemas/v1.0.3\">
   <g2s:g2sBody g2s:dateTimeSent=\"2012-11-06T09:12:38.006-08:00\" g2s:egmId=\"RBG_1234\"
            g2s:hostId=\"1\">
      <g2s:communications g2s:commandId=\"37102\" g2s:dateTime=\"2012-11-06T09:12:38.004-08:00\"
            g2s:deviceId=\"1\"
            g2s:errorCode=\"G2S_none\"

"エスケープされた文字列で終わることなくこれを行うにはどうすればよいですか?
C#は本当に文字をエスケープしているのでしょうか、それともデバッガーが文字列を表示しているのと同じ方法でしょうか?

4

1 に答える 1

5

これは、文字列がデバッガー内に表示される方法です(Visual Studioだと思いますか?)。これらの円記号は、実際には文字列に含まれていません。文字列をコンソールまたはファイルに出力し、円記号が表示されないことに注意することで、これを自分で証明できます。

Visual Studio

于 2012-11-06T20:04:31.703 に答える