我有一些vb.net代码
Dim reader As New StreamReader("C:\geoData\zipCodes.geojson", Encoding.Default)
Dim line As String = Nothing
Dim lines As Integer = 0
While (reader.Peek() <> -1)
If line.Contains("""ZCTA5CE20"": ""47236""") Then
在一个2.5gig的json文件中查找这一行是非常有效的。但是,我需要查找所有包含
If line.Contains("""ZCTA5CE20"": ""47*""") Then
所以我需要在47后面加一个通配符,但是如果我加了一个 *,它就需要一个 * 后面加双引号,而不是通配符。我仍然需要在47前面加双引号。
我有代码将其作为JSON对象工作,但如果我尝试加载整个文件,它会引发内存错误。
Dim json = File.ReadAllText("C:\geoData\zipCodes.geojson")
Dim ResultArray As New JArray
Dim Jvalues As JObject = JObject.Parse(json)
1条答案
按热度按时间cngwdvgl1#
您将需要正则表达式搜索。
在正则表达式中,
.
是一个通配符,对应于任何字符的一次出现。*
表示重复该字符零次、一次或多次,?
表示尽可能少地重复。?
确保没有引号被跳过,否则.*
将跨越到行中的最后一个双引号。但在正则表达式中,有几种解决问题的方法。例如,您可以将.*?
替换为\d*
。\d
代表一个数字。\
转义后面的白色字符。您可以使用File.ReadLines一次一行地遍历这些行,而不必一次加载整个文件。