手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

一些字符串操作的问题和回答

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

   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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!