VBScript создать список, разделить элементы списка и обрезать их - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь создать код, который будет добавлять переменные в список.Затем он разделит все элементы списка на :, вернув только вторую часть.В конце все возвращенные строки будут обрезаны.

Для лучшего понимания позвольте мне показать вам пример:

  1. Добавьте «a: b» и «c: d» в список.
  2. Splitэлементы, поэтому возвращаются только «b» и «d».
  3. Обрезка «b» и «d».

До сих пор я придумал что-то подобное, но это нене работает, и я понятия не имею, почему.

Set list = CreateObject("System.Collections.ArrayList")
list.Add "bob : kid"
list.Add "ryan : alex"
list.Add "kate : andy"
list.Add "alice : mandy"
For Each item In list
    Dim item As String
    Dim words As String() = item.Split(New Char() {":"c})
    For Each word In words
        WScript.Echo word
    Next
Next 

1 Ответ

1 голос
/ 22 мая 2019

Ваш код не работает, потому что он не является допустимым VBScript. У вас есть несколько проблем:

  • VBScript не поддерживает объявления типизированных переменных (Dim var As Type). Используйте Dim var, если вы хотите явно определить переменную. Однако обратите внимание, что в VBScript определение переменных требуется только тогда, когда вы ставите Option Explicit в начале вашего скрипта.
  • VBScript не поддерживает комбинированное объявление и определение переменных (Dim var = value). Вам нужно два отдельных оператора для определения переменной и присвоения ей значения. Два оператора можно поместить в одну строку, разделив их двоеточием (Dim var : var = value), но они по-прежнему являются двумя отдельными операторами.
  • В VBScript строка является примитивным типом данных. Строки VBScript не являются объектами со свойствами. Для разбиения строки используйте функцию Split().
  • Не переопределяйте переменную цикла внутри цикла.

Измените ваш цикл на что-то вроде этого, и он должен делать то, что вы хотите:

For Each item In list
    Dim words : words = Split(item, ":")
    For Each word In words
        WScript.Echo Trim(word)
    Next
Next

Если вам нужен только второй элемент из каждого разделенного элемента, вы должны сделать что-то вроде этого:

Dim words : words = Split(item, ":")
WScript.Echo Trim(words(1))

или как это:

WScript.Echo Trim(Split(item, ":")(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...