Как преобразовать массив символов в массив строк - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть код ниже, который требует, чтобы я преобразовал массив символов в массив строк, но я получаю следующую ошибку: Option Strict On disallows implicit conversions from '1-dimensional array of Char' to 'System.Collections.Generic.IEnumerable(Of String)'

    Dim lst As New List(Of String)
    lst.AddRange(IO.Path.GetInvalidPathChars())
    lst.AddRange(IO.Path.GetInvalidFileNameChars())

    lst.Add("&")
    lst.Add("-")
    lst.Add(" ")

    Dim sbNewName As New StringBuilder(orignalName)
    For i As Integer = 0 To lst.Count - 1
        sbNewName.Replace(lst(i), "_")
    Next

    Return sbNewName.ToString

Я пытался использовать конвертер через Array.ConvertAll, ноне смог найти хороший пример, я мог бы использовать цикл, но думал, что будет лучший способ.Может ли кто-нибудь помочь?

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Просто измените строки lst.AddRange на это:

Array.ForEach(Path.GetInvalidPathChars(), AddressOf lst.Add)
Array.ForEach(Path.GetInvalidFileNameChars(), AddressOf lst.Add)
1 голос
/ 28 ноября 2011

Синтаксис VB Linq для меня не является сильной стороной, но для начала рассмотрите возможность выбора элементов из символьных массивов и преобразования каждого в строку. В C # это будет

lst.AddRange(System.IO.Path.GetInvalidPathChars().Select(c => c.ToString()); 

Спасибо NYSystemsAnalyst за синтаксис VB

lst.AddRange(System.IO.Path.GetInvalidPathChars().Select(Function(c) c.ToString()))

Без Linq вы могли бы просто выполнять итерации в цикле явно

For Each c as Char in System.IO.Path.GetInvalidPathChars()
    lst.Add(c.ToString())
Next c
...