2012-11-01 31 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