2017-02-28 9 views
-5

かなり簡単な作業に悩まされていますが、この機能をどうやって作成するかは完全にはわかりません。下に見られるように、私は単純な文字列を持っている:テキスト内の項目に行番号を割り当てます。

私はVB.NETで、何をしようとしている
{ 
"0":{"variable1":"ABC1","variable2":"AA","variable3":"BB"}, 
"5":{"variable1":"ABC2","variable2":"AA","variable3":"BB"}, 
"3":{"variable1":"BC3","variable2":"AA","variable3":"BB"}, 
"1":{"variable1":"DC4","variable2":"AA","variable3":"BB"}, 
"4":{"variable1":"DD5","variable2":"AA","variable3":"BB"} 
} 

は、それぞれの行を見つけループを作成することで、配置し、それらの最初の数字「0」、「1」等がどの行にあるかに応じて順番に並べ替えると、その中の番号が正しい順番に置き換えられます。

単純に:

1)文字列に含まれる行の数を調べます。たとえば、20行としましょう。

2) ""内の各番号を検索して置き換えます。この例では、1から20の順番で行の開始点を指定します。

出力は、最上部に例を使用した場合のようになります。

{ 
"2":{"variable1":"ABC1","variable2":"AA","variable3":"BB"}, //"2" because it is the second line within the string 
"3":{"variable1":"ABC2","variable2":"AA","variable3":"BB"}, 
"4":{"variable1":"BC3","variable2":"AA","variable3":"BB"}, 
"5":{"variable1":"DC4","variable2":"AA","variable3":"BB"}, 
"6":{"variable1":"DD5","variable2":"AA","variable3":"BB"} 
} 

クイックフィックスのための任意のアイデアを?

+0

私たちにあなたがこれまでにしようとしているコードを表示し、その文字列がどこから来るのか教えてください。 –

+0

どういうわけか、0と1を失い、6を得ます。 – LarsTech

+0

ソートされたものは '2'で始まり' 0'や '1'ではなく、なぜですか? – Edper

答えて

0

「XがありYが必要です」という質問があります。ここでXは注意が必要な項目です。

あなたはそれを提示された文字列が本当にあるならば、

Imports System.Text 

Module Module1 

    Sub Main() 
     Dim s = "{ 
""0"":{""variable1"":""ABC1"",""variable2"":""AA"",""variable3"":""BB""}, 
""5"":{""variable1"":""ABC2"",""variable2"":""AA"",""variable3"":""BB""}, 
""3"":{""variable1"":""BC3"",""variable2"":""AA"",""variable3"":""BB""}, 
""1"":{""variable1"":""DC4"",""variable2"":""AA"",""variable3"":""BB""}, 
""4"":{""variable1"":""DD5"",""variable2"":""AA"",""variable3"":""BB""} 
}" 

     Dim t = s.Split({vbCrLf}, StringSplitOptions.None) 

     Dim u As New StringBuilder 

     For i = 0 To t.Length - 1 
      If t(i).StartsWith("""") Then 
       Dim parts = t(i).Split({":"c}, 2) 
       If parts.Count = 2 Then 
        u.AppendLine($"""{i + 1}"":{parts(1)}") 
       End If 

      Else 
       u.AppendLine(t(i)) 
      End If 
     Next 

     Console.WriteLine(u.ToString().TrimEnd()) 

     Console.ReadLine() 

    End Sub 

End Module 

出力:

{ 
"2":{"variable1":"ABC1","variable2":"AA","variable3":"BB"}, 
"3":{"variable1":"ABC2","variable2":"AA","variable3":"BB"}, 
"4":{"variable1":"BC3","variable2":"AA","variable3":"BB"}, 
"5":{"variable1":"DC4","variable2":"AA","variable3":"BB"}, 
"6":{"variable1":"DD5","variable2":"AA","variable3":"BB"} 
} 
+0

ありがとうございます。私はそれを実行しようとしていますが、私はライン上でコンパイラのエラーを取得しています: "u.AppendLine($" "" {i + 1} "":{parts(1)} ")" - $は無効な文字。何か案は? – user6934446

+0

ああ、申し訳ありませんが、これはVS2015の機能です。文字列連結または 'String.Format'を使用するように行を調整します。 –

+0

これまで通りましたが、スクリプトは#行に基づいて数字を並べることなく、元の文字列を単純に描きました。あなたはそのようなu.AppendLine(String.Format( "" "{i + 1}" ":{parts(1)}"))を意味しましたか?なぜ文字列を編集していないように見えるのですか? – user6934446

関連する問題