Vb.net 拆线

Vb.net 拆线,vb.net,string,substring,indexof,Vb.net,String,Substring,Indexof,我有一个字符串,它有两个部分被a-分开。当我把这个值传递给我的新页面时,我只需要第一个部分 示例值为:MS 25-25 我只想展示:MS 25 我正在查看IndexOf()和SubString(),但我找不到如何获取字符串的开头并删除结尾。您可以使用连字符上的Split函数 .Split("-") 如果您不想使用拆分,可以使用子字符串 yourString.Substring(0, yourString.IndexOf("-") - 1) 编辑 在完全没有连字符或连字符位于字符串开头的情况下

我有一个字符串,它有两个部分被a-分开。当我把这个值传递给我的新页面时,我只需要第一个部分

示例值为:MS 25-25

我只想展示:MS 25


我正在查看IndexOf()和SubString(),但我找不到如何获取字符串的开头并删除结尾。

您可以使用连字符上的
Split
函数

.Split("-")
如果您不想使用
拆分
,可以使用
子字符串

yourString.Substring(0, yourString.IndexOf("-") - 1)
编辑

在完全没有连字符或连字符位于字符串开头的情况下,上述代码将失败,并且当连字符周围没有空格时,将不会返回完整的前导子字符串。考虑使用安全性:

Dim pos As Integer
Dim result As String

pos = yourString.IndexOf("-")
If (pos > 0) Then
    result = yourString.Substring(0, pos)
ElseIf (pos = 0) Then
    result = String.Empty
Else
    result = yourString
End If
这可能有助于:

基本上,子串方法需要2个参数。起始位置和长度

在您的例子中,起始位置是0,长度是IndexOf方法-1找到的位置

例如:

Dim s as String
Dim result as String

s = "MS 25 - 25"

result = s.SubString(0, s.IndexOf("-")-1)

我打算把它作为一种最不常用的方法,因为我不想仅仅为了得到第一部分而创建一个字符串数组。如果有更简单的方法,我宁愿这样做。我喜欢这样做的原因很简单,如果你的字符串不包含任何连字符,那么字符串数组中的第一个索引仍然是你想要显示的。问题是,我知道总会有一个连字符,因为我从中提取它。做一些安全检查是没有坏处的。您可能需要从
IndexOf
检查>0的位置。否则你会有一个错误被抛出的情况下总是变化。这正是我要找的。非常好用,谢谢,vb是基于0的