2017-02-28 32 views
-5

我相當堅持一個相當簡單的任務,但我不完全確定如何製作此功能。我有一個簡單的字符串所看到如下:將行號分配給文本中的項目

{ 
"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"} 
} 

我試圖做的,在VB.NET,是創建一個循環,發現每一行,並安排那些第一數字「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

相關問題