一些關於VB中字串操作的問題和回答 (轉)
一些關於VB中字串操作的問題和回答 (轉)[@more@]提問:
假設我從表格中複製了一些資料到剪貼簿中,比如是這樣一些資訊:
Allen 12
Anderson 13
Douglas 12
Ohio 49
我怎樣才能把這些名字和數字讀進一個陣列或者一個Grid框中呢?用Clipboard.GetText(vbCFText)只能一下子讀入所有資料,而我希望一個一個地讀。
回答:
新建一個專案,在窗體上放兩個label和一個command。以下是程式碼:
Private Sub Command1_Click()
Dim vTekst$
vTekst$ = "Allen 12 "
vTekst$ = vTekst$ & "Anderson 13 "
vTekst$ = vTekst$ & "Bernard 14 "
vTekst$ = vTekst$ & "Constance 15 "
Label1.Caption = vTekst$
Case Command1.Caption
Case "Copy Clipboard"
Clipboard.Clear
Clipboard.SetText Label1.Caption
Command1.Caption = "Put into Label"
Case "Put into Label"
Label2.Caption = GetPartofString(Clipboard.GetText, 1)
Command1.Caption = "Copy Clipboard"
'read in array
Dim vText(7) As String
Dim c%
For c% = 0 To 7
vText(c%) = GetPartofString(Clipboard.GetText, c% + 1)
Next c%
'show result
For c% = 0 To 7
MsgBox vText(c%)
Next c%
End Sub
Private Function GetPartofString($, part%) As String
Dim p%, c%, tmp$
tmp$ = source$
c% = 0
Do
p% = InStr(tmp, Chr(32))
If p% <> 0 Then
GetPartofString = Left(tmp, p% - 1)
c% = c% + 1
tmp = Right(tmp, Len(tmp) - p%)
End If
L While c% <> part%
End Function
--1-------------------------------------------------------------
提問:
我如何才能數出一個字串中的字母數?舉例來說:我想在按下OK時計算在Text1.Text中的字母數。
回答:
使用LEN(Text1.text)命令如何?你就可以得到長度……包括空格和其它非字母的字元。所以如果你希望去掉它們的話,必須要一個小來檢查Text1.Text中的字元是否為真正的字母:
Public Function CountCharacters(source$) As Integer
Dim counter%, t%
Const Characters$ = "abcdefghijklmnopqrstuvwxyz"
For t% = 1 To Len(source$)
If InStr(Characters, LCase$(Mid$(source$, t%, 1))) <> 0 Then
counter% = counter% + 1
End If
Next t%
CountCharacters = counter%
End Function
使用時就象這樣:
vString$ = "Testing .... about what?"
MsgBox CountCharacters(vString$)
--2-------------------------------------------------------------
提問:
有沒有人知道怎樣來做這樣一個特殊的迴圈?我需要把一個字串,比如“Hey how are you”,中的每個字母放到不同的變數中。例如對上面這句話,H放在A1中,e放在A2中,以此類推。謝謝你的幫助。
回答:
Dim vChar() as String
Sub PlaceInArray(source$)
Dim p%
For p% = 1 To Len(source$)
Redim Preserve vChar(p%)
vChar(p%) = Mid$(source$,p%,1)
Next p%
End Sub
在陣列vChar的每一項中就分別是給出字串的所有字母。
--3-------------------------------------------------------------
提問:
你怎樣把一個文字中的單詞一個一個讀入字串變數中?檔案中每個單詞都被空格分隔。
回答:
Dim vs() as String
Sub SplitStringintoWords(bron$)
Dim c%, p%, t%, vCheck%
Dim TempBron$, tmp$
'把一行輸入分成單詞
t% = 0
TempBron$ = bron$
For c% = 1 To Len(bron$)
p% = InStr(TempBron$, Chr(32))
If p% <> 0 Then
ReDim Preserve vWords(t%)
tmp = Left$(TempBron$, p% - 1)
vWords(t%) = StripString(tmp)
TempBron$ = Right$(TempBron$, Len(TempBron$) - p)
t% = t% + 1
c% = c% + p%
End If
Next c%
ReDim Preserve vWords(t%)
vWords(t%) = StripString(TempBron)
End Sub
首先你必須先讀入一行文字,然後使用以上這個過程。在陣列vWords中就是文字檔案中的所有單詞。如果你在讀檔案方面也需要幫助,告訴我。
--4-------------------------------------------------------------
提問:
我需要替換窗體上所有文字框中的某一個單詞,應該怎麼做?先說聲謝謝了。
回答:
試試這個……
'在新窗體上放一個command和三個textbox,然後加入以下程式碼
'按F5執行,注意先把Command的caption改成"&Replace somebody with me"
Private Sub Command1_Click()
Const vString$ = "testing for somebody on the"
Select Case Command1.Caption
Case "&Replace text in all textboxes"
Text1.Text = vString
Text2.Text = vString
Text3.Text = vString
Command1.Caption = "&Replace somebody with me"
Case "&Replace somebody with me"
Call ChangeText
Command1.Caption = "&Replace text in all textboxes"
End Select
End Sub
Function sReplace(SearchLine As String, SearchFor As String, ReplaceWith As String)
Dim vSearchLine As String, found As Integer
found = InStr(SearchLine, SearchFor): vSearchLine = SearchLine
If found <> 0 Then
vSearchLine = ""
If found > 1 Then vSearchLine = Left(SearchLine, found - 1)
vSearchLine = vSearchLine + ReplaceWith
If found + Len(SearchFor) - 1 < Len(SearchLine) Then _
vSearchLine = vSearchLine + Right$(SearchLine, _
Len(SearchLine) - found - Len(SearchFor) + 1)
End If
sReplace = vSearchLine
End Function
Private Sub ChangeText()
Dim Control
For Each Control In Form1.Controls
If TypeOf Control Is TextBox Then
Control.Text = sReplace(Control.Text, "somebody", "me")
End If
Next Control
End Sub
--5-------------------------------------------------------------
提問:
現在我有一個文字框來輸入字串。另外有60個文字框的陣列,它們包含了我的一個字典。我設法檢查字串中的每一個單詞,看它是否符合控制元件陣列中的也就是字典中的單詞。我在檢驗前不得不把標點全部去掉。如果整個句子都拼寫對了,我發出一個訊息,如果拼錯了,發出另一個訊息。
感謝所有對此提出的任何建議和想法。
回答:
假定你有一個文字框來輸入單詞,然後你對照一個陣列來檢查它們……你可以使用以下程式碼作為你的起點……但是請考慮把你的字典轉換成一個,因為當它成為一個真正的字典時,資料庫工作起來快得多。
'on the general section
Dim vWords()
Dim Max%
Dim vCheckWord()
Private Form1_Load()
Text1.SetFocus
Text1.Text = "living in america but not really"
Max% = 10
'make array
'you can use an ascii file to get the words
Redim vCheckWord(Max)
vCheckWord(0) = "walther"
vCheckWord(1) = "musch"
vCheckWord(2) = "america"
vCheckWord(3) = "tilburg"
vCheckWord(4) = "hallo"
vCheckWord(5) = "testen"
vCheckWord(6) = "testing"
vCheckWord(7) = "really"
vCheckWord(8) = "visual"
vCheckWord(9) = "basic"
End Sub
Sub SplitStringintoWords(bron$)
Dim c%, p%, t%, vCheck%
Dim TempBron$, tmp$
Dim vOke As Boolean
'splitting the input into words
t% = 0
TempBron$ = bron$
For c% = 1 To Len(bron$)
p% = InStr(TempBron$, Chr(32))
If p% <> 0 Then
ReDim Preserve vWords(t%)
tmp = Left$(TempBron$, p% - 1)
vWords(t%) = StripString(tmp)
TempBron$ = Right$(TempBron$, Len(TempBron$) - p)
t% = t% + 1
c% = c% + p%
End If
Next c%
ReDim Preserve vWords(t%)
vWords(t%) = StripString(TempBron)
'checking against spellingschecker
vOke = False
For c% = 0 To t%
For vCheck% = 0 To Max
If vCheckWord(vCheck%) <> vWords(c%) Then
vOke = False
Else
vOke = True
vCheck% = Max%
End If
Next vCheck%
If Not vOke Then MsgBox vWords(c%)
vOke = False
Next c%
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
'split string into words
Call SplitStringintoWords(Text1.Text)
End If
End Sub
Function StripString(source As String) As String
Const Letters$ = "abcdefghijklmnopqrstuvwxyz"
Dim p%, tmp$
tmp = source$
For p% = 1 To Len(source$)
If InStr(Letters, LCase(Mid$(source$, p%, 1))) = 0 Then
Select Case p%
Case 1
tmp = Right$(source$, Len(source$) - p%)
Case Len(source$)
tmp = Left$(source$, Len(source$) - 1)
Case Else
tmp = Left$(source$, p%) & Right$(source$, Len(source$) - p%)
End Select
End If
Next p%
StripString = tmp
End Function
--6-------------------------------------------------------------
提問:
我需要幫助,如何判斷一個檔名是否有字尾名,然後剝除這個字尾。原本我是想獲得檔名,然後用另一個字尾名來把它存為一個檔案。有沒有一個方便的方法,不用搜尋整個路徑字串中的“”。
回答:
從路徑字串的後面向前查詢第一個“”,用Right$命令,這樣你就可以得到檔名。
如果你要刪掉字尾名,也這麼做,只是查詢第一個“.”而已。注意在W95中,檔名可以包括一個以上的“.”
可以使用這樣的程式碼:
Dim p%
Function GetFileName(PathString$) As String
GetFileName = PathString
For p% = Len(PathString) To 0 Step -1
If Mid$(PathString,p%,1) = "" then
GetFileName = Right$(PathString,p%)
Exit Function
End If
Next p%
End Function
--7-------------------------------------------------------------
假設我從表格中複製了一些資料到剪貼簿中,比如是這樣一些資訊:
Allen 12
Anderson 13
Douglas 12
Ohio 49
我怎樣才能把這些名字和數字讀進一個陣列或者一個Grid框中呢?用Clipboard.GetText(vbCFText)只能一下子讀入所有資料,而我希望一個一個地讀。
回答:
新建一個專案,在窗體上放兩個label和一個command。以下是程式碼:
Private Sub Command1_Click()
Dim vTekst$
vTekst$ = "Allen 12 "
vTekst$ = vTekst$ & "Anderson 13 "
vTekst$ = vTekst$ & "Bernard 14 "
vTekst$ = vTekst$ & "Constance 15 "
Label1.Caption = vTekst$
Case Command1.Caption
Case "Copy Clipboard"
Clipboard.Clear
Clipboard.SetText Label1.Caption
Command1.Caption = "Put into Label"
Case "Put into Label"
Label2.Caption = GetPartofString(Clipboard.GetText, 1)
Command1.Caption = "Copy Clipboard"
'read in array
Dim vText(7) As String
Dim c%
For c% = 0 To 7
vText(c%) = GetPartofString(Clipboard.GetText, c% + 1)
Next c%
'show result
For c% = 0 To 7
MsgBox vText(c%)
Next c%
End Sub
Private Function GetPartofString($, part%) As String
Dim p%, c%, tmp$
tmp$ = source$
c% = 0
Do
p% = InStr(tmp, Chr(32))
If p% <> 0 Then
GetPartofString = Left(tmp, p% - 1)
c% = c% + 1
tmp = Right(tmp, Len(tmp) - p%)
End If
L While c% <> part%
End Function
--1-------------------------------------------------------------
提問:
我如何才能數出一個字串中的字母數?舉例來說:我想在按下OK時計算在Text1.Text中的字母數。
回答:
使用LEN(Text1.text)命令如何?你就可以得到長度……包括空格和其它非字母的字元。所以如果你希望去掉它們的話,必須要一個小來檢查Text1.Text中的字元是否為真正的字母:
Public Function CountCharacters(source$) As Integer
Dim counter%, t%
Const Characters$ = "abcdefghijklmnopqrstuvwxyz"
For t% = 1 To Len(source$)
If InStr(Characters, LCase$(Mid$(source$, t%, 1))) <> 0 Then
counter% = counter% + 1
End If
Next t%
CountCharacters = counter%
End Function
使用時就象這樣:
vString$ = "Testing .... about what?"
MsgBox CountCharacters(vString$)
--2-------------------------------------------------------------
提問:
有沒有人知道怎樣來做這樣一個特殊的迴圈?我需要把一個字串,比如“Hey how are you”,中的每個字母放到不同的變數中。例如對上面這句話,H放在A1中,e放在A2中,以此類推。謝謝你的幫助。
回答:
Dim vChar() as String
Sub PlaceInArray(source$)
Dim p%
For p% = 1 To Len(source$)
Redim Preserve vChar(p%)
vChar(p%) = Mid$(source$,p%,1)
Next p%
End Sub
在陣列vChar的每一項中就分別是給出字串的所有字母。
--3-------------------------------------------------------------
提問:
你怎樣把一個文字中的單詞一個一個讀入字串變數中?檔案中每個單詞都被空格分隔。
回答:
Dim vs() as String
Sub SplitStringintoWords(bron$)
Dim c%, p%, t%, vCheck%
Dim TempBron$, tmp$
'把一行輸入分成單詞
t% = 0
TempBron$ = bron$
For c% = 1 To Len(bron$)
p% = InStr(TempBron$, Chr(32))
If p% <> 0 Then
ReDim Preserve vWords(t%)
tmp = Left$(TempBron$, p% - 1)
vWords(t%) = StripString(tmp)
TempBron$ = Right$(TempBron$, Len(TempBron$) - p)
t% = t% + 1
c% = c% + p%
End If
Next c%
ReDim Preserve vWords(t%)
vWords(t%) = StripString(TempBron)
End Sub
首先你必須先讀入一行文字,然後使用以上這個過程。在陣列vWords中就是文字檔案中的所有單詞。如果你在讀檔案方面也需要幫助,告訴我。
--4-------------------------------------------------------------
提問:
我需要替換窗體上所有文字框中的某一個單詞,應該怎麼做?先說聲謝謝了。
回答:
試試這個……
'在新窗體上放一個command和三個textbox,然後加入以下程式碼
'按F5執行,注意先把Command的caption改成"&Replace somebody with me"
Private Sub Command1_Click()
Const vString$ = "testing for somebody on the"
Select Case Command1.Caption
Case "&Replace text in all textboxes"
Text1.Text = vString
Text2.Text = vString
Text3.Text = vString
Command1.Caption = "&Replace somebody with me"
Case "&Replace somebody with me"
Call ChangeText
Command1.Caption = "&Replace text in all textboxes"
End Select
End Sub
Function sReplace(SearchLine As String, SearchFor As String, ReplaceWith As String)
Dim vSearchLine As String, found As Integer
found = InStr(SearchLine, SearchFor): vSearchLine = SearchLine
If found <> 0 Then
vSearchLine = ""
If found > 1 Then vSearchLine = Left(SearchLine, found - 1)
vSearchLine = vSearchLine + ReplaceWith
If found + Len(SearchFor) - 1 < Len(SearchLine) Then _
vSearchLine = vSearchLine + Right$(SearchLine, _
Len(SearchLine) - found - Len(SearchFor) + 1)
End If
sReplace = vSearchLine
End Function
Private Sub ChangeText()
Dim Control
For Each Control In Form1.Controls
If TypeOf Control Is TextBox Then
Control.Text = sReplace(Control.Text, "somebody", "me")
End If
Next Control
End Sub
--5-------------------------------------------------------------
提問:
現在我有一個文字框來輸入字串。另外有60個文字框的陣列,它們包含了我的一個字典。我設法檢查字串中的每一個單詞,看它是否符合控制元件陣列中的也就是字典中的單詞。我在檢驗前不得不把標點全部去掉。如果整個句子都拼寫對了,我發出一個訊息,如果拼錯了,發出另一個訊息。
感謝所有對此提出的任何建議和想法。
回答:
假定你有一個文字框來輸入單詞,然後你對照一個陣列來檢查它們……你可以使用以下程式碼作為你的起點……但是請考慮把你的字典轉換成一個,因為當它成為一個真正的字典時,資料庫工作起來快得多。
'on the general section
Dim vWords()
Dim Max%
Dim vCheckWord()
Private Form1_Load()
Text1.SetFocus
Text1.Text = "living in america but not really"
Max% = 10
'make array
'you can use an ascii file to get the words
Redim vCheckWord(Max)
vCheckWord(0) = "walther"
vCheckWord(1) = "musch"
vCheckWord(2) = "america"
vCheckWord(3) = "tilburg"
vCheckWord(4) = "hallo"
vCheckWord(5) = "testen"
vCheckWord(6) = "testing"
vCheckWord(7) = "really"
vCheckWord(8) = "visual"
vCheckWord(9) = "basic"
End Sub
Sub SplitStringintoWords(bron$)
Dim c%, p%, t%, vCheck%
Dim TempBron$, tmp$
Dim vOke As Boolean
'splitting the input into words
t% = 0
TempBron$ = bron$
For c% = 1 To Len(bron$)
p% = InStr(TempBron$, Chr(32))
If p% <> 0 Then
ReDim Preserve vWords(t%)
tmp = Left$(TempBron$, p% - 1)
vWords(t%) = StripString(tmp)
TempBron$ = Right$(TempBron$, Len(TempBron$) - p)
t% = t% + 1
c% = c% + p%
End If
Next c%
ReDim Preserve vWords(t%)
vWords(t%) = StripString(TempBron)
'checking against spellingschecker
vOke = False
For c% = 0 To t%
For vCheck% = 0 To Max
If vCheckWord(vCheck%) <> vWords(c%) Then
vOke = False
Else
vOke = True
vCheck% = Max%
End If
Next vCheck%
If Not vOke Then MsgBox vWords(c%)
vOke = False
Next c%
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
'split string into words
Call SplitStringintoWords(Text1.Text)
End If
End Sub
Function StripString(source As String) As String
Const Letters$ = "abcdefghijklmnopqrstuvwxyz"
Dim p%, tmp$
tmp = source$
For p% = 1 To Len(source$)
If InStr(Letters, LCase(Mid$(source$, p%, 1))) = 0 Then
Select Case p%
Case 1
tmp = Right$(source$, Len(source$) - p%)
Case Len(source$)
tmp = Left$(source$, Len(source$) - 1)
Case Else
tmp = Left$(source$, p%) & Right$(source$, Len(source$) - p%)
End Select
End If
Next p%
StripString = tmp
End Function
--6-------------------------------------------------------------
提問:
我需要幫助,如何判斷一個檔名是否有字尾名,然後剝除這個字尾。原本我是想獲得檔名,然後用另一個字尾名來把它存為一個檔案。有沒有一個方便的方法,不用搜尋整個路徑字串中的“”。
回答:
從路徑字串的後面向前查詢第一個“”,用Right$命令,這樣你就可以得到檔名。
如果你要刪掉字尾名,也這麼做,只是查詢第一個“.”而已。注意在W95中,檔名可以包括一個以上的“.”
可以使用這樣的程式碼:
Dim p%
Function GetFileName(PathString$) As String
GetFileName = PathString
For p% = Len(PathString) To 0 Step -1
If Mid$(PathString,p%,1) = "" then
GetFileName = Right$(PathString,p%)
Exit Function
End If
Next p%
End Function
--7-------------------------------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1004659/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- delphi中關於字串的操作字串
- 關於字串中取相同的字元問題(小學題)字串字元
- c中關於指標的宣告和定義的一些問題指標
- VB中API的宣告特殊問題 (轉)API
- 關於Linux一些問題和答案Linux
- 關於jsp中轉發的問題JS
- 關於Java中分層中遇到的一些問題Java
- 關於Redis的一些小問題Redis
- Leetcode刷題中關於java的一些小問題LeetCodeJava
- 關於java的“原子操作”問題Java
- 一個關於c++字串處理和delete[]與delete差別的問題 (轉)C++字串delete
- 關於操作駁回遇到的問題
- 實現一些字串操作標準庫函式、解決一些字串問題字串函式
- 關於Action中的setAttribute,和session的問題!!!!Session
- 關於介面的一些問題
- 關於SAP生產訂單操作中的問題處理。
- 關於Java NIO的一些問題,求助。Java
- 關於table的一些操作
- 關於JQuery操作checkbox問題jQuery
- 關於紅旗5硬碟安裝的一些問題解惑(轉)硬碟
- 【Java面試題】如何回答GC相關問題Java面試題GC
- 回覆網友問題,關於一個數值和字串一起累加的問題!字串
- VB中檔案操作的兩種方式 (轉)
- VB.NET中關於DataGrid顏色的自定義。 (轉)
- 關於Filter中ServletRequest強轉HttpServletRequest問題FilterServletHTTP
- 整理有關面試普遍問題和回答技巧 (持續更新~)面試
- vb基礎(列印問題) (轉)
- 關於單機遊戲製作中的物件重用問題(轉)遊戲物件
- 關於CSS一些細節問題CSS
- 關於瀏覽器相容的一些問題瀏覽器
- 解答關於學習前端的一些問題前端
- [譯] 回答有關 Flutter App 開發的問題FlutterAPP
- VB程式設計中的一些經驗 (轉)程式設計
- 《關於MySQL的一些騷操作》MySql
- 關於日期計算的問題 (轉)
- 關於原始碼的學習的一些問題原始碼
- 【峰】ASP.NET中的一些字串操作ASP.NET字串
- MFC開發常見問題的回答2 (轉)