Instr, Replace and Trim in VB 【代码解释】
Instr, Replace and Trim in VB [Code Explanation]
我是VB的新手,任何人都可以解释一下我无法理解的以下代码。
我基本上学习了 Instr、Trim 和 replace,但所有这些都同时出现在了一起。
这里 Myval1 和 Myval2 包含
Myval1='N-123','N-124','N-125'
Myval2=AB,BC,CD
据我了解,StreamReader读取路径,声明为line的行,所有行都是从
读取的
给定路径并存储在行中,然后我们在行中处理特定单词 myval1 作为比较方法作为测试,如果
position 大于0则trim,会发生replace。在这里,Myval1= 的位置是 1,现在语句
在'Then'之后会处理。我对这个有 ", , , " 的语句感到困惑 我理解 Myval1,Myval2 被替换为 null("") 并且我不理解三个逗号,任何人都可以在这里解释
Dim st As StreamReader = New StreamReader(myPath)
Dim line As String
Do
line = st.ReadLine()
If InStr(line, "Myval1=", CompareMethod.Text) > 0 Then
Myval1 = Trim(Replace(line, "Myval1=", "", , , CompareMethod.Text))
End If
If InStr(line, "MyValue=", CompareMethod.Text) > 0 Then
Myval2 = Trim(Replace(line, "Myval2=", "", , , CompareMethod.Text))
End If
代码中缺少一些东西 - 循环在哪里关闭?另外,Myval1 和 Myval2 在哪里声明?
尽管如此,代码执行以下操作:
逐行顺序读取文件。如果某行包含字符串 "Myval1=",则从该行中删除该字符串,并删除该行开头和结尾的空格 (Trim)。
请记住,变量 "line" 本身并没有因此而改变。操作的结果保存在变量 "Myval1".
中
如果该行包含字符串 "Myval2="
,之后也会执行同样的操作
Replace函数中的“, , ,”只是表示没有使用两个可选参数。你也可以这样写:
Myval1 = Trim(Replace(line, "Myval1=", "",vbNull,vbNull, CompareMethod.Text))
第一个省略的参数允许您定义读取时的起始位置"line"。第二个允许您定义一个 SubString 应该被替换的频率限制。
让我们假设变量 "line" 如下所示:
Dim line As String = "xxxMyval1=foo,Myval1=bar,Myval1=foobar"
您可以指定从第四个位置开始,只删除前两次出现的 "Myval1",如下所示:
Dim result As String = Replace(line, "Myval1=", "", 4, 2, CompareMethod.Text)
Console.Write(result)
产生:
foo,bar,Myval1=foobar
最后:
您甚至不需要可选参数 "CompareMethod.Text",因为它是默认参数。所以你的 Replace 函数也可以看起来像这样并且做同样的事情:
Dim result As String = Replace(line, "Myval1=", "", 4, 2)
或您的原始代码:
Myval1 = Trim(Replace(line, "Myval1=", ""))
我是VB的新手,任何人都可以解释一下我无法理解的以下代码。 我基本上学习了 Instr、Trim 和 replace,但所有这些都同时出现在了一起。 这里 Myval1 和 Myval2 包含
Myval1='N-123','N-124','N-125' Myval2=AB,BC,CD
据我了解,StreamReader读取路径,声明为line的行,所有行都是从
读取的给定路径并存储在行中,然后我们在行中处理特定单词 myval1 作为比较方法作为测试,如果
position 大于0则trim,会发生replace。在这里,Myval1= 的位置是 1,现在语句
在'Then'之后会处理。我对这个有 ", , , " 的语句感到困惑 我理解 Myval1,Myval2 被替换为 null("") 并且我不理解三个逗号,任何人都可以在这里解释
Dim st As StreamReader = New StreamReader(myPath)
Dim line As String
Do
line = st.ReadLine()
If InStr(line, "Myval1=", CompareMethod.Text) > 0 Then
Myval1 = Trim(Replace(line, "Myval1=", "", , , CompareMethod.Text))
End If
If InStr(line, "MyValue=", CompareMethod.Text) > 0 Then
Myval2 = Trim(Replace(line, "Myval2=", "", , , CompareMethod.Text))
End If
代码中缺少一些东西 - 循环在哪里关闭?另外,Myval1 和 Myval2 在哪里声明?
尽管如此,代码执行以下操作:
逐行顺序读取文件。如果某行包含字符串 "Myval1=",则从该行中删除该字符串,并删除该行开头和结尾的空格 (Trim)。 请记住,变量 "line" 本身并没有因此而改变。操作的结果保存在变量 "Myval1".
中如果该行包含字符串 "Myval2="
,之后也会执行同样的操作Replace函数中的“, , ,”只是表示没有使用两个可选参数。你也可以这样写:
Myval1 = Trim(Replace(line, "Myval1=", "",vbNull,vbNull, CompareMethod.Text))
第一个省略的参数允许您定义读取时的起始位置"line"。第二个允许您定义一个 SubString 应该被替换的频率限制。
让我们假设变量 "line" 如下所示:
Dim line As String = "xxxMyval1=foo,Myval1=bar,Myval1=foobar"
您可以指定从第四个位置开始,只删除前两次出现的 "Myval1",如下所示:
Dim result As String = Replace(line, "Myval1=", "", 4, 2, CompareMethod.Text)
Console.Write(result)
产生:
foo,bar,Myval1=foobar
最后: 您甚至不需要可选参数 "CompareMethod.Text",因为它是默认参数。所以你的 Replace 函数也可以看起来像这样并且做同样的事情:
Dim result As String = Replace(line, "Myval1=", "", 4, 2)
或您的原始代码:
Myval1 = Trim(Replace(line, "Myval1=", ""))