我試圖以我自己的形式爲每個商店創建唯一的代碼。我有兩個TextBox控件(TBNameStore
和TBCodeStore
)。我想要的是,當我寫商店的名稱,例如「兄弟在手臂」,在TBNameStore
,然後TBCodeStore
應該自動填充文本「BIA」。識別TextBox中每個單詞的第一個字母
我該怎麼做?
我試圖以我自己的形式爲每個商店創建唯一的代碼。我有兩個TextBox控件(TBNameStore
和TBCodeStore
)。我想要的是,當我寫商店的名稱,例如「兄弟在手臂」,在TBNameStore
,然後TBCodeStore
應該自動填充文本「BIA」。識別TextBox中每個單詞的第一個字母
我該怎麼做?
那麼我寫一個代碼可以幫助你解決你的問題。
Option Strict On
Public Class Form1
Public Function GetInitials(ByVal MyText As String) As String
Dim Initials As String = ""
Dim AllWords() As String = MyText.Split(" "c)
For Each Word As String In AllWords
If Word.Length > 0 Then
Initials = Initials & Word.Chars(0).ToString.ToUpper
End If
Next
Return Initials
End Function
Private Sub TBNameStore_TextChanged(sender As Object, e As EventArgs) Handles TBNameStore.TextChanged
TBCodeStore.Text = GetInitials(TBNameStore.Text)
End Sub
End Class
就像您所看到的,GetInitials會讓您獲得文本中所有單詞的全部首字母。
@Bjørn-RogerKringsjå??,我的答案沒有錯誤... – 2015-02-07 13:42:27
您的代碼工作正常,沒有錯誤,並容易理解我..謝謝..你已經節省了我的時間..:D – CrazyThink 2015-02-08 07:46:13
@GreenFire完美!請注意,我的目的不是欺負你,而是讓你提高你的答案。另外請注意,您不必包含選項strict語句,因爲通過查看代碼很容易瞭解此選項是關閉/開啓的。 – 2015-02-08 16:08:19
Split
和
SubString
方法和
LINQ可能看起來像這樣
一種可能的解決方案:
的代碼看起來是這樣的:
private function abbreviation(input as String, optional delimiter as String = " ")
dim result = new StringBuilder()
input.Split(delimiter) _
.ToList() _
.ForEach(sub (word as String)
result.Append(word.SubString(0, 1).ToUpper())
end sub)
return result.ToString()
end function
用法:
dim s = "Brothers in Arms"
Console.WriteLine("{0} => {1}", s, abbreviation(s))
和輸出看起來像預計:
Brothers in Arms => BIA
看空間和子串函數的'split'函數 – 2015-02-07 12:38:13
請花點時間仔細閱讀* * [問] – Plutonix 2015-02-07 13:08:35
@pasty現在我沒有任何關於我的情況的線索..現在iam試圖學習關於拆分和子串功能..就像Giorgi Nakeuri說的那樣.. – CrazyThink 2015-02-07 13:10:47