VB.NET中的String.Split方法是什么?

8

我在使用 String.Split 方法时遇到了一些问题,例子如下:

Dim tstString As String = "something here -:- URLhere"
Dim newtstString = tstString.Split(" -:- ")
MessageBox.Show(newtstString(0))
MessageBox.Show(newtstString(1))

在PHP中(我的母语!),上面的代码将在消息框中返回something here和URLhere。
在VB.NET中,我得到:
something here

并且

: (colon)

字符串分割只能使用标准字符吗?我似乎无法弄清楚这个问题。不过我相信这只是一个非常简单的问题!


我通过将代码行更改为以下内容使其正常工作: Dim newtstString = Split(tstString, "-:-")尽管我仍然不确定为什么 String.Split 无法正常工作。 - Chris
1
请查看 http://msdn.microsoft.com/en-us/library/system.string.split.aspx 以获取 string.split() 的所有重载。 - Jim
1
我在调查String.Split不会删除分割文本,只会删除第一个字母后来到这里,当我运行你的代码newTstString{"something", "here", "-:-", "URLhere"},这是我现在所期望的,因为我知道tstString.Split(" -:- ")在功能上等同于tstString.Split(" ")。此问题中列出的输出是您运行tstString.Split("-")时得到的结果,尽管在结果数组中会有第三个元素" URLhere" - Lance U. Matthews
1个回答

17

要避免将字符串转换为Char数组,您需要执行以下操作。

    Dim text As String = "something here -:-  urlhere"
    Dim parts As String() = text.Split(New String() {" -:- "}, StringSplitOptions.None)

这是你需要在这种情况下使用的System.String成员函数。

Public Function Split(ByVal separator As String(), ByVal options As StringSplitOptions) As String()

1
需要注意的是,它不会将字符串转换为 Char 数组,而是使用字符串的第一个字符,并仅将该单个字符传递给 Split 重载。这就是当您让 VB 隐式将 String 转换为 Char 时发生的情况,也是开启 Option Strict On 的另一个原因。 - GSerg

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