我想分割一个字符串,然后将结果修剪成一行。
所以字符串:
"psychology ¦ history ¦ geography"
应返回以下成员,且不要在末尾加上空格:
psychology
history
geography
我尝试过:
String.Split("¦").Trim
但是Trim
不适用于数组。有没有一种单行方法,不管它有多脏,都可以完成这项工作?
我确定这已经被重复很多次了,但是我找不到VB.Net
的相关解决方案。请不要仅在不解释如何将解决方案转换为VB.Net
的情况下链接到另一种语言的问题。
答案 0 :(得分:2)
您可以使用LINQ的Split
方法在一行中Trim
和Select字符串。
都将字符串分配给局部变量:
Dim input As String = "psychology ¦ history ¦ geography"
Dim result1 = input.Split("¦"c).Select((Function(s) s.Trim))
或直接使用字符串作为源:
Dim result2 = "psychology ¦ history ¦ geography".Split("¦"c).Select((Function(s) s.Trim))
请注意,Type
和result1
中的result2
现在是IEnumerable(Of String),而不是数组:
如果没有其他说明,LINQ的方法将返回IEnumerable<T>
。
另请注意,此语法假设Option Infer
为On
。如果保留Off
,则需要显式声明类型:
Dim result As IEnumerable(Of String) = (...)
如果需要字符串Array作为输出,则需要询问:
Dim result3 As String() = input.Split("¦"c).Select((Function(s) s.Trim)).ToArray()
关于附加到c
方法参数的类型字符(Split
):
From the Visual Basic Language Reference: Char Data Type
键入字符。将文字类型字符
C
附加到 单字符字符串文字将其强制为Char
数据类型。Char
没有标识符类型字符。
答案 1 :(得分:0)
如果项目中没有嵌入空格,则只需将空格字符作为分隔符和管道传递即可。将其与“删除空条目”选项结合使用,多个空格分隔符不是问题。如果需要处理其他空格字符,则可以添加这些字符。
input.Split(New String() {"|", " "}, StringSplitOptions.RemoveEmptyEntries)