从VB.NET中的字符串中获取子字符串文本

时间:2016-06-27 04:26:26

标签: vb.net string text substring

假设我有一个文字Howard Johnson, 21 (USA)

我想获取文本Johnson的子字符串。

我可以使用InStrMicrosoft.VisualBasic.LeftMid执行此操作,但我总是发现此方法相当乏味,我想知道是否还有其他方法更简单的方法。

Dim myText As String = "Howard Johnson, 21 (USA)"
Dim textIWant As String = InStr(1, myText, Chr(32))
Dim LastName As String = Mid(myText, textIWant + 1, textIWant)
'Output: Johnson

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

尝试使用此代码 - 它使用IndexOf的{​​{1}}函数来查找String内字符的第一个实例。

对于姓氏,示例代码正在查找第一个空格和第一个逗号,并在其间查找文本。假设姓氏总是以这种方式划界。

对于国家/地区,示例代码正在查找第一个(和最后一个)并在其间查找文本。假设该国总是在圆括号内。

以下是代码:

String

它也适用于姓氏有空格的人,例如:

Sub Main()

    Dim Input As String
    Dim Surname As String
    Dim Country As String

    Input = "Howard Johnson, 21 (USA)"
    Surname = Input.Substring(Input.IndexOf(" ") + 1, Input.IndexOf(",") - Input.IndexOf(" ") - 1)
    Country = Input.Substring(Input.IndexOf("(") + 1, Input.IndexOf(")") - Input.IndexOf("(") - 1)

    Console.WriteLine(Surname)
    Console.WriteLine(Country)

    Console.ReadKey()

End Sub

将输出

Input = "Albert del Rosario, 75 (Phillipines)" Surname = Input.Substring(Input.IndexOf(" ") + 1, Input.IndexOf(",") - Input.IndexOf(" ") - 1)

答案 1 :(得分:0)

var str = "Status=Success,PNR=76UUEI78787870,Customer_Ref=89511133545";
var vals = str.Split(',');
var json = "{" +
            string.Join(",",
                vals.Select(val => val.Split('=')).Select(s => string.Format("\"{0}\": \"{1}\"", s[0], s[1]))) +
            "}";