2016-09-21 12 views
-2

私はこのような段落がある場合:段落を行単位で解析する方法は?

MODULE Local (Parent := "Local", 
      ParentModPortId := 1, 
       CatalogNumber := "1756-L71S", 
       Vendor := 1, 
       ProductType := 14, 
       ProductCode := 158, 
       Major := 27, 
       Minor := 11, 
       PortLabel := "RxBACKPLANE", 
       ChassisSize := 13, 
       Slot := 11, 
       Mode := 2#0000_0000_0000_0001, 
       CompatibleModule := 0, 
       KeyMask := 2#0000_0000_0001_1111, 
       SafetyNetwork := 16#0000_3acc_033e_6fa0) 
END_MODULE 

をし、それが現在、私のプログラムでは、単純な文字列として保存されます。さて、各行を配列のエントリとして保存したいのですが、どうすればそれをやりますか?

+0

'、'が共通のものである場合、 '、'でデータを分割しないのはなぜですか? – MethodMan

+0

達成しようとしていることはまったく明確ではありません。あなたは、テキスト入力や他の何かを言及しているコードですか?入力はどのように保存されていますか?あなたはディスクやデータベースからそれを読んでいますか?あなたの質問には欠けている情報がたくさんあるので、答えがほとんど不可能です。良い質問をするには、よくある質問を見てください。 –

+0

あなたの最終的な結果がどんなものかをより具体的に記述してください。どのように配列の個々の文字列をフォーマットしますか? –

答えて

0

使用String.Split機能

string[] paragraph =yourString.Split(","); 

私はフォーマットは、他のセパレータとはいえ、JSONにかなり似ていることを確認し

String Para = @"MODULE Local (Parent := ""Local"", 
     ParentModPortId:= 1, 
      CatalogNumber:= ""1756-L71S"", 
      Vendor:= 1, 
      ProductType:= 14, 
      ProductCode:= 158, 
      Major:= 27, 
      Minor:= 11, 
      PortLabel:= ""RxBACKPLANE"", 
      ChassisSize:= 13, 
      Slot:= 11, 
      Mode:= 2#0000_0000_0000_0001, 
      CompatibleModule:= 0, 
      KeyMask:= 2#0000_0000_0001_1111, 
      SafetyNetwork:= 16#0000_3acc_033e_6fa0) 
     END_MODULE"; 
+0

文字列が、私はちょうどそのようにそれを貼り付けるので、もし私が上記の投稿、そのブロックでフォーマットされた:文字列段落=「// thatblock」その後、私はこれらのエラーが表示さ@JaydipJ https://gyazo.com/1aae0d19c02b6636d84fdd80bebb70c7 –

+0

それを得ます?うまくいかなかった。 https://gyazo.com/63bfe0c4fcc87b7165f6145efc6e4b07私の文字列は 'ローカル'の前に終わりです –

+0

@二重引用符を使用して@右にエスケープすることができますか? –

0

にエスケープ文字として二重の二重引用符を使用してみてください。

したがって、それはJSONに変換することで解決する1つの方法:

  • 全てを置き換える ":=" "="
  • と置き換える置き換え(および)と{と}
  • と;
  • 次にあなたがNuGetであるインスタンスNewtonSoft、のために、JSONのLIBを使用してそれを解析することができMODULEラベル

を削除します。

期待する文字列のペアを事前に知っている場合は、それを定義済みのクラスにキャストできます。それ以外の場合は、動的(または.NETバージョンが動的には古すぎる場合はディクショナリ)にキャストし、そこから続行します。

+0

これらの値は非常に敏感で、これらの文字列にとって不可欠です。その文字列を置き換えたり変更したりすることはできません。 –

+0

どのように重要ですか?セパレータですが、文字通り何かに置き換えて、必要に応じて元のものに戻すことができます。 –

関連する問題