嗨,有人可以向我解释为什么这行不通。
我基本上必须要创建名为Books和NewBooks的文本文件...
从Web请求中填充文本文件,然后将信息解析为文本文件...当我启动程序时,书和新书是相同的,并且几乎是彼此的副本。
完成了更多的Web请求以更新NewBooks文本文件,当我比较它们时,如果NewBooks中有一行不在Books中,则将其添加到名为myNewBooks的第三个文本文件中。现在,我将在此处显示的初始代码可以按预期运行
Dim InitialBooks = File.ReadAllLines("Books.json")
Dim TW As System.IO.TextWriter
'Create a Text file and load it into the TextWriter
TW = System.IO.File.CreateText("myNewBooks.JSON")
Dim NewBooks = String.Empty
Using reader = New StreamReader("NewBooks.json")
Do Until reader.EndOfStream
Dim current = reader.ReadLine
If Not InitialBooks.Contains(current) Then
NewBooks = current & Environment.NewLine
TW.WriteLine(NewBooks)
TW.Flush()
'Close the File
End If
Loop
End Using
TW.Close() : TW.Dispose()
但是因为我的文本文件行中的部分字符串包含一个url,有时我发现同一本书使用不同的url ...我得到了重复的书籍条目,因为url是唯一的区别。所以我想我会在url之前分割字符串,以便我只比较标题,描述和区域...在文本文件中的一行看起来像这样:
{“标题”:“此处为我的标题”,“描述”:“此处为我的描述”,“区域”:“此处为我的区域”,“网址”:“此处为我的网址”,“图片”:“我的图片在这里“};
所以今天有一个家伙帮助我弄清楚了如何分割线,看起来更像这样:
{“标题”:“此处为我的标题”,“描述”:“此处为我的描述”,“区域”:“此处为我的区域”,“网址”
这很棒,但是现在我比较时看不到第一行包含分割线,我也不明白为什么...这是修改后的代码。
Dim InitialBooks = File.ReadAllLines("Books.json")
Dim TW As System.IO.TextWriter
'Create a Text file and load it into the TextWriter
TW = System.IO.File.CreateText("myNewBooks.JSON")
Dim NewBooks = String.Empty
Using reader = New StreamReader("NewBooks.json")
Do Until reader.EndOfStream
Dim current = reader.ReadLine
Dim splitAt As String = """Url"""
Dim index As Integer = current.IndexOf(splitAt)
Dim output As String = current.Substring(0, index + splitAt.Length)
If Not InitialBooks.Contains(output) Then
NewBooks = current & Environment.NewLine
TW.WriteLine(NewBooks)
TW.Flush()
'Close the File
End If
Loop
End Using
TW.Close() : TW.Dispose()
您的智慧将不胜感激!
答案 0 :(得分:0)
您的OP令人困惑。
如果我正确理解:
您有3个文件图书,新书和MyBooks。 您可以从网络下载数据,如果该数据不在“书籍”中,则将其添加到NewBooks,否则将其添加到MyBooks(重复)。
看到您正在使用JSON,我将通过以下方式进行操作。
加载书籍,在下载数据时将其检查并与书籍进行比较。然后写入适当的文件。
Imports System.Web.Script.Serialization ' for reading of JSON (+add the reference to System.Web.Extensions library)
Dim JSONBooks = New JavaScriptSerializer().DeserializeObject(Books_string)
检查具有断点的JSONBooks。您将看到它的外观。 删除数据时,您只需按标题,URL或您想要的任何内容检查其中是否存在书籍。
由于您只展示了一本书
Debug.Print(JSONBooks("Title")) 'returns >>>My Title Here
如果您有更多
JSONBooks(x)("Title") 'where x is book number.
因此您可以遍历所有书籍并检查所需内容。
JSON数组看起来像这样(如果您需要构造它)
[{book1},{book2},...]