英文:
Read and split line by line in text file
问题
我正在尝试从我的应用程序资源中读取文本文件。对于文本文件中的每一行,我想要在逗号之前和之后拆分文本。
txt文件中的每一行看起来像这样:
-125.325235,4845636
我的问题是该函数循环运行,不断重复执行for each语句。
对于每一行作为字符串在我的.Resources.CompanyBases
MsgBox(My.Resources.CompanyBases.Split(","c).First)
MsgBox(My.Resources.CompanyBases.Split(","c).Last)
下一个
英文:
I am trying to read a text file from my applications resources. For each line in this text file I want to split the text before and after the comma.
Each line in txt file looks like this:
-125.325235,4845636
My issue is that the function loops and does not end constantly repeating the for each statement
For Each Line As String In My.Resources.CompanyBases
MsgBox(My.Resources.CompanyBases.Split(","c).First)
MsgBox(My.Resources.CompanyBases.Split(","c).Last)
Next
答案1
得分: 1
首先,不要像那样一次又一次地获取资源。这些属性不是"实时"的。每次获取属性时,资源都必须从程序集中提取出来。如果您需要多次使用该值,请获取一次属性并将其分配给变量,然后多次使用该变量。
其次,您并没有获取文件。资源的整个目的是它们不是不同的文件,而是编译到程序集中的数据。它只是一个像任何其他字符串一样的 String
。您通常如何在换行符上拆分字符串?
最后,您有一个带有循环控制变量 Line
的 For Each
循环,但在循环内部从未使用该变量。在循环内部应该拆分 Line
,而不是包含所有行的资源属性。
For Each line In My.Resources.CompanyBases.Split({Environment.NewLine}, StringSplitOptions.None)
Dim fields = line.Split(","c)
Debug.WriteLine(fields(0))
Debug.WriteLine(fields(1))
Next
请注意,如果您使用 .NET Core,Split
也将接受一个字符串数组,而不仅仅是一个字符串。
英文:
Firstly, don't ever get a resource over and over like that. Those properties are not "live". Every time you get the property, the resource has to be extracted from your assembly. If you need to use the value multiple times, get the property once and assign it to a variable, then use that variable over and over.
Secondly, you're not getting a file. The whole point of resources is that they are not distinct files but rather data compiled into your assembly. It's just a String
like any other. How would you usually split a String
on line breaks?
Finally, you have a For Each
loop with a loop control variable Line
, yet you never use that variable inside the loop. It should be Line
that you're splitting inside the loop, not the resource property containing all the lines.
For Each line In My.Resources.CompanyBases.Split({Environment.NewLine}, StringSplitOptions.None)
Dim fields = line.Split(","c)
Debug.WriteLine(fields(0))
Debug.WriteLine(fields(1))
Next
Note that, if you're using .NET Core, Split
will accept a String
as well as a String
array.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论