Vb.net 字符串数组的东西!

Vb.net 字符串数组的东西!,vb.net,arrays,string,Vb.net,Arrays,String,对-首先,我正在进入一个不熟悉的领域-所以请友善一点 我有一个脚本,看起来有点像这样: Private Function checkString(ByVal strIn As String) As String Dim astrWords As String() = New String() {"bak", "log", "dfd"} Dim strOut As String = "" Dim strWord As String For Each strWord

对-首先,我正在进入一个不熟悉的领域-所以请友善一点

我有一个脚本,看起来有点像这样:

Private Function checkString(ByVal strIn As String) As String
    Dim astrWords As String() = New String() {"bak", "log", "dfd"}
    Dim strOut As String = ""
    Dim strWord As String
    For Each strWord In astrWords
        If strIn.ToLower.IndexOf(strWord.ToLower, 0) >= 0 Then
            strOut = strWord.ToLower
            Exit For
        End If
    Next
    Return strOut
End Function
Dim extensionArray As String = ""
    Dim count As Integer = 0
    For Each item In lstExtentions.Items
        If count = 0 Then
            extensionArray = extensionArray & """." & item & """"
        Else
            extensionArray = extensionArray & ", ""." & item & """"
        End If
        count = count + 1
    Next
    My.Settings.extensionArray = extensionArray
    My.Settings.Save()
它的功能是检查输入字符串,查看其中是否有任何“单词”,然后返回值

因此,我编写了一些代码来动态创建这些单词,如下所示:

Private Function checkString(ByVal strIn As String) As String
    Dim astrWords As String() = New String() {"bak", "log", "dfd"}
    Dim strOut As String = ""
    Dim strWord As String
    For Each strWord In astrWords
        If strIn.ToLower.IndexOf(strWord.ToLower, 0) >= 0 Then
            strOut = strWord.ToLower
            Exit For
        End If
    Next
    Return strOut
End Function
Dim extensionArray As String = ""
    Dim count As Integer = 0
    For Each item In lstExtentions.Items
        If count = 0 Then
            extensionArray = extensionArray & """." & item & """"
        Else
            extensionArray = extensionArray & ", ""." & item & """"
        End If
        count = count + 1
    Next
    My.Settings.extensionArray = extensionArray
    My.Settings.Save()
显然,它使用列表项创建相同的数组。该代码的输出与我硬编码时完全相同,但当我将代码的第一位更改为: 将单词设置为字符串()=新字符串(){My.Settings.extensionArray} 而不是: 按字符串()表示的单词=新字符串(){“bak”、“log”、“dfd”} 它开始寻找整个语句,而不是遍历每个单独的语句

我认为这与字符串末尾有括号有关——但我迷路了


感谢您的帮助:)

您需要将extensionArray设置为字符串数组,而不仅仅是字符串。 注意

Dim something as String  
。。。定义单个字符串,但

Dim somethingElse as String()  
。。。定义整个字符串数组

New String() {"bak", "log", "dfd"}
我认为,对于您的代码,您需要:

Dim extensionArray As String() = new String(lstExtensions.Items)
Dim count As Integer = 0
For Each item In lstExtentions.Items
    extensionArray(count) = item
    count = count + 1
Next
My.Settings.extensionArray = extensionArray
My.Settings.Save()
然后在checkString的开头,您需要

Private Function checkString(ByVal strIn As String) As String
    Dim astrWords As String() = My.Settings.extensionArray
    ...

如果Items有一个“ToArray()”方法,那么将lstExtensions.Items转换为数组可能还有一种更简单的方法,但我不确定您在那里使用的是什么类型…

您所做的是创建一个包含所有3个单词的字符串。您需要创建一个字符串数组

New String() {"bak", "log", "dfd"}
表示创建包含3个字符串值“bak”、“log”和“dfd”的新字符串数组

意味着创建一个新的字符串数组,其中只包含一个值,即extensionArray的内容。(您已将其设置为“bak”、“log”、“dfd”)。请注意,这是一个字符串,而不是字符串数组。您不能只创建一个包含逗号的字符串,您需要创建一个字符串数组

New String() {"bak", "log", "dfd"}
如果要动态创建阵列,需要如下定义:

Dim astrWords As String() = New String(3)
这将创建一个包含3个空格的数组

然后,您可以通过执行以下操作为每个空间指定一个字符串:

astrWords(0) = "bak"
astrWords(1) = "log"
astrWords(2) = "dfd"
您可以在for循环中执行该操作:

Dim count As Integer = 0
For Each item In lstExtentions.Items
    astrWords(count) = item
    count = count + 1
Next

或者,您可以考虑使用。这样,您就可以使用Add()方法向其中添加多个字符串

当您使用文本数组中设置中的字符串时,就像使用包含分隔字符串的单个字符串一样:

Dim astrWords As String() = New String() {"""bak"", ""log"", ""dfd"""}
您可能要做的是在设置中放置一个逗号分隔的字符串,如
“bak,log,dfd”
,然后您可以将其拆分为一个数组:

Dim astrWords As String() = My.Settings.extensionArray.Split(","C)

我想您希望extensionArray的类型是String(),而不是String。当您尝试初始化新数组时,初始值设定项不知道解析多个值。它只看到你的一根弦。

你是个和蔼可亲的人!这太完美了!非常感谢-快乐编码:)