如何在VB.NET中将字符串转换为字符串数组?

5

好的,我有一个以字符串数组为输入的函数...

我有一个需要从该函数处理的字符串...

因此,

Dim str As String = "this is a string"

func(// How to pass str ?)

Public Function func(ByVal arr() As String)
     // Processes the array here
End Function

我也尝试过以下方法:

func(str.ToArray)  // Gives error since it converts str to char array instead of String array.

我该怎么解决这个问题?


你想将它转换成什么样的数组?以空格为分隔符吗? - Jodaka
不,不是那样的。只需将“mystring”转换为一个带有单个元素“mystring”的数组即可。 - Yugal Jindle
6个回答

8
使用VB10,您可以简单地执行以下操作:
func({str})

如果您使用的是旧版本,您需要执行以下操作:

func(New String() {str})

5

只需实例化一个新数组,其中包含您的字符串即可。

Sub Main()
    Dim s As String = "hello world"
    Print(New String() {s})
End Sub

Sub Print(strings() As String)
    For Each s In strings
        Console.WriteLine(s)
    Next
End Sub

可以这样做...但是我们能不能以更简洁的方式实现呢?比如像 str.ToStringArray 这样更直观的方法? - Yugal Jindle
2
你正在尝试创建一个新类型的对象(在这种情况下是String()),而不是你已经拥有的对象。由于没有内置的方法可以这样做,所以通过一些麻烦的方式来实现是否更好呢?你可以编写一个扩展方法来完成它。 - Jimmy
1
@Yugal Meta-Knight的答案是我能想象到的最简洁的方法。只需添加两个大括号 Print({s}) - MarkJ
当然可以。点赞给Meta-Knight! - Yugal Jindle

3

使用String.Split方法以 "空格" 为分隔符进行分割。更多细节请查看:http://msdn.microsoft.com/en-us/library/system.string.split.aspx

如果需要逐个字符分隔,则编写自己的函数来完成。

尝试这段代码:

Dim input As String = "characters"
Dim substrings() As String = Regex.Split(input, "")
Console.Write("{")
For ctr As Integer = 0 to substrings.Length - 1
   Console.Write("'{0}'", substrings(ctr))
   If ctr < substrings.Length - 1 Then Console.Write(", ")
Next
Console.WriteLine("}")
' The example produces the following output:   
'    {'', 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', 's', ''}

使用正则表达式,http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx#Y2166

不,我不想让我的字符串分裂!! - Yugal Jindle
1
所以,我误解了你的问题... :( - Naga Harish M

2

你能把这个字符串放到一个数组里吗?我的VB语言有点生疏,但是可以试试这个:

Dim arr(0) As String
arr(0) = str

func(arr)

1

我不是VB专家,但这看起来对我来说是最干净的方法:

func(New String() { str })

然而,如果这对您来说还不够清晰,您可以使用针对字符串的扩展方法之一

func(str.ToStringArray)

或者以一种通用的方式:

func(str.ToSingleElementArray)

这是一个扩展方法的后续操作:

<Extension> _
Public Shared Function ToSingleElementArray(Of T)(ByVal item As T) As T()
    Return New T() { item }
End Function

最简洁的方式是 func( { str } ),就像Meta-Knight的回答中所示。 - MarkJ

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接