2012-11-01 35 views
3

简单初学者练习:简单的得到的字符串缩写 - Visual Basic中

还有的地方,你把你的名字,以空格分隔一个输入框,然后从第一个和最后一个名字的第一个字母,出来把它放到一个标签

IE(乔鲍勃)= JB


我知道这可能是与阵列中完成,但锻炼更多的是使用类似的子字符串函数的IndexOf,删除,替换等..

回答

-1

您可以尝试使用SubStringSplit方法。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim myInitials As String 
    Dim myName As String = "Joe Bob" 
    myInitials = myName.Substring(0, 1) & myName.Split(" ")(1).Substring(0, 1) 
End Sub 
+0

这就是我一直在寻找的东西。谢谢。只是一个问题,所以我可以更好地理解:你能解释什么substring(0,1),然后...(1).Substring(0,1)正在做什么? –

+0

@DavidSalib正如一些答案指出的那样,字符串是字符数组,'substring(0,1)'做的是从第一个字符串的位置0获取第一个字符。 Split(“”)(1)'然后将字符串分成2个字符串,'Substring(0,1)'从第二个字符串的位置0获取第一个字符。请注意,在我的示例中没有检查确保输入格式正确。 –

+0

好的非常感谢!是的,我添加了诸如Trim()之类的东西并替换句点,并将其限制为只有一个空格。 –

1

还有就是便利的字符串方法Split在默认情况下,在空格分割字符串,如果没有指定其他分隔符。

Dim words As String() = TextBox1.Text.Split() 
Dim initials As String = "" 
For Each word As String In words 
    initials &= word(0) 
Next 

注意:字符串可以被编入索引,就好像它们是Char数组。 word(0)word的第一个字符。

initials &= word(0) 

是简写

initials = initials & word(0) 
0

你可以试试这个:

dim str as String=TextBox1.Text 
Label1.Text=str.Remove(1, str.LastIndexOf(" ")).Remove(2) 

如果你愿意,你可以在一行做到这一点:

Label1.Text = TextBox1.Text.Remove(1, TextBox1.Text.LastIndexOf(" ")).Remove(2) 
0

可以试试也是这样的!

Dim str As String = textBox1.Text 
Dim initials As String = New String(str.Split(" "c).Select(Function(f) f(0)).ToArray) 
+0

我喜欢你的想法,因为LINQ,但最后你使用了ToArray,这是DavidSalib试图避免的。 – Nianios

+0

这只是由于字符串构造函数需要一个char数组 – Ric

+0

是的,我知道。我不是想指责你,我真的很喜欢你的答案。 – Nianios