假设我有一个文字Howard Johnson, 21 (USA)
我想获取文本Johnson
的子字符串。
我可以使用InStr
和Microsoft.VisualBasic.Left
或Mid
执行此操作,但我总是发现此方法相当乏味,我想知道是否还有其他方法更简单的方法。
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
有什么建议吗?
答案 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]))) +
"}";