欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

提问:
假设我从Excel表格中复制了一些数据到剪贴板中,比如是这样一些信息:
Allen12
Anderson13
Douglas12
Ohio49

我怎样才能把这些名字和数字读进一个数组或者一个Grid框中呢?用Clipboard.GetText(vbCFText)只能一下子读入所有数据,而我希望一个一个地读。

回答:
新建一个项目,在窗体上放两个label和一个command。以下是代码:
PrivateSubCommand1_Click()
  DimvTekst$

  vTekst$=”Allen12″
  vTekst$=vTekst$&”Anderson13″
  vTekst$=vTekst$&”Bernard14″
  vTekst$=vTekst$&”Constance15″
  Label1.Caption=vTekst$

  SelectCaseCommand1.Caption
  Case”CopyClipboard”
    Clipboard.Clear
    Clipboard.SetTextLabel1.Caption
    Command1.Caption=”PutintoLabel”
  Case”PutintoLabel”
    Label2.Caption=GetPartofString(Clipboard.GetText,1)
    Command1.Caption=”CopyClipboard”

    readinarray
    DimvText(7)AsString
    Dimc

    Forc=0To7
      vText(c)=GetPartofString(Clipboard.GetText,c 1)
    Nextc

    showresult
    Forc=0To7
      MsgBoxvText(c)
    Nextc

EndSub

PrivateFunctionGetPartofString(source$,part)AsString
  Dimp,c,tmp$

  tmp$=source$
  c=0
  Do
    p=InStr(tmp,Chr(32))
    Ifp<>0Then
      GetPartofString=Left(tmp,p-1)
      c=c 1
      tmp=Right(tmp,Len(tmp)-p)
    EndIf
  LoopWhilec<>part

EndFunction
–1————————————————————-

提问:
我如何才能数出一个字符串中的字母数?举例来说:我想在用户按下OK时计算在Text1.Text中的字母数。

回答:
使用LEN(Text1.text)命令如何?你就可以得到长度……包括空格和其它非字母的字符。所以如果你希望去掉它们的话,必须要一个小函数来检查Text1.Text中的字符是否为真正的字母:

PublicFunctionCountCharacters(source$)AsInteger
  Dimcounter,t
  ConstCharacters$=”abcdefghijklmnopqrstuvwxyz”

  Fort=1ToLen(source$)
    IfInStr(Characters,LCase$(Mid$(source$,t,1)))<>0Then
      counter=counter 1
    EndIf
  Nextt
  CountCharacters=counter
EndFunction

使用时就象这样:
vString$=”Testing….aboutwhat?”
MsgBoxCountCharacters(vString$)

–2————————————————————-

提问:
有没有人知道怎样来做这样一个特殊的循环?我需要把一个字符串,比如“Heyhowareyou”,中的每个字母放到不同的变量中。例如对上面这句话,H放在A1中,e放在A2中,以此类推。谢谢你的帮助。

回答:
DimvChar()asString

SubPlaceInArray(source$)

Dimp

Forp=1ToLen(source$)
RedimPreservevChar(p)
vChar(p)=Mid$(source$,p,1)
Nextp
EndSub
在数组vChar的每一项中就分别是给出字符串的所有字母。

–3————————————————————-

提问:
你怎样把一个文本文件中的单词一个一个读入字符串变量中?文件中每个单词都被空格分隔。

回答:
DimvWords()asString

SubSplitStringintoWords(bron$)
Dimc,p,t,vCheck
DimTempBron$,tmp$

把一行输入分成单词
  t=0
  TempBron$=bron$
  Forc=1ToLen(bron$)
    p=InStr(TempBron$,Chr(32))
    Ifp<>0Then
    ReDimPreservevWords(t)
      tmp=Left$(TempBron$,p-1)
      vWords(t)=StripString(tmp)
      TempBron$=Right$(TempBron$,Len(TempBron$)-p)
      t=t 1
      c=c p
    EndIf
  Nextc
  ReDimPreservevWords(t)
  vWords(t)=StripString(TempBron)

EndSub

首先你必须先读入一行文本,然后使用以上这个过程。在数组vWords中就是文本文件中的所有单词。如果你在读文件方面也需要帮助,告诉我。
–4————————————————————-

提问:
我需要替换窗体上所有文本框中的某一个单词,应该怎么做?先说声谢谢了。

回答:
试试这个……

在新窗体上放一个command和三个textbox,然后加入以下代码
按F5运行,注意先把Command的caption改成”&Replacesomebodywithme”

PrivateSubCommand1_Click()
  ConstvString$=”testingforsomebodyonthenet”
  SelectCaseCommand1.Caption
  Case”&Replacetextinalltextboxes”
    Text1.Text=vString
    Text2.Text=vString
    Text3.Text=vString
    Command1.Caption=”&Replacesomebodywithme”
  Case”&Replacesomebodywithme”
    CallChangeText
    Command1.Caption=”&Replacetextinalltextboxes”
  EndSelect

EndSub

FunctionsReplace(SearchLineAsString,SearchForAsString,ReplaceWithAsString)
  DimvSearchLineAsString,foundAsInteger

  found=InStr(SearchLine,SearchFor):vSearchLine=SearchLine
  Iffound<>0Then
    vSearchLine=””
    Iffound>1ThenvSearchLine=Left(SearchLine,found-1)
    vSearchLine=vSearchLine ReplaceWith
    Iffound Len(SearchFor)-1<Len(SearchLine)Then_
      vSearchLine=vSearchLine Right$(SearchLine,_
  Len(SearchLine)-found-Len(SearchFor) 1)
  EndIf
  sReplace=vSearchLine

EndFunction

PrivateSubChangeText()
  DimControl

  ForEachControlInForm1.Controls
    IfTypeOfControlIsTextBoxThen
      Control.Text=sReplace(Control.Text,”somebody”,”me”)
    EndIf
  NextControl

EndSub
–5————————————————————-

提问:
现在我有一个文本框来输入字符串。另外有60个文本框的控件数组,它们包含了我的一个字典。我设法检查字符串中的每一个单词,看它是否符合控件数组中的也就是字典中的单词。我在检验前不得不把标点全部去掉。如果整个句子都拼写对了,我发出一个消息,如果拼错了,发出另一个消息。
感谢所有对此提出的任何建议和想法。

回答:
假定你有一个文本框来输入单词,然后你对照一个数组来检查它们……你可以使用以下代码作为你的起点……但是请考虑把你的字典转换成一个数据库,因为当它成为一个真正的字典时,数据库工作起来快得多。

onthegeneralsection
DimvWords()
DimMax
DimvCheckWord()

PrivateForm1_Load()
  Text1.SetFocus
  Text1.Text=”livinginamericabutnotreally”
  Max=10

  makearray
  youcanuseanasciifiletogetthewords
  RedimvCheckWord(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”

EndSub

SubSplitStringintoWords(bron$)
Dimc,p,t,vCheck
DimTempBron$,tmp$
DimvOkeAsBoolean

splittingtheinputintowords
  t=0
  TempBron$=bron$
  Forc=1ToLen(bron$)
    p=InStr(TempBron$,Chr(32))
    Ifp<>0Then
    ReDimPreservevWords(t)
      tmp=Left$(TempBron$,p-1)
      vWords(t)=StripString(tmp)
      TempBron$=Right$(TempBron$,Len(TempBron$)-p)
      t=t 1
      c=c p
    EndIf
  Nextc
  ReDimPreservevWords(t)
  vWords(t)=StripString(TempBron)

checkingagainstspellingschecker
  vOke=False
  Forc=0Tot
    ForvCheck=0ToMax
      IfvCheckWord(vCheck)<>vWords(c)Then
        vOke=False
      Else
        vOke=True
        vCheck=Max
      EndIf
    NextvCheck
    IfNotvOkeThenMsgBoxvWords(c)
    vOke=False
  Nextc

EndSub

PrivateSubText1_KeyPress(KeyAsciiAsInteger)
  IfKeyAscii=13Then
    splitstringintowords
    CallSplitStringintoWords(Text1.Text)
  EndIf

EndSub

FunctionStripString(sourceAsString)AsString
ConstLetters$=”abcdefghijklmnopqrstuvwxyz”
Dimp,tmp$

  tmp=source$
  Forp=1ToLen(source$)
    IfInStr(Letters,LCase(Mid$(source$,p,1)))=0Then
      SelectCasep
      Case1
        tmp=Right$(source$,Len(source$)-p)
      CaseLen(source$)
        tmp=Left$(source$,Len(source$)-1)
      CaseElse
        tmp=Left$(source$,p)&Right$(source$,Len(source$)-p)
      EndSelect
    EndIf
  Nextp
  StripString=tmp

EndFunction

–6————————————————————-

提问:
我需要帮助,如何判断一个文件名是否有后缀名,然后剥除这个后缀。原本我是想获得文件名,然后用另一个后缀名来把它存为一个备份文件。有没有一个方便的方法,不用搜索整个路径字符串中的“\”。

回答:
从路径字符串的后面向前查找第一个“\”,用Right$命令,这样你就可以得到文件名。
如果你要删掉后缀名,也这么做,只是查找第一个“.”而已。注意在W95中,文件名可以包括一个以上的“.”

可以使用这样的代码:
Dimp

FunctionGetFileName(PathString$)AsString

GetFileName=PathString
Forp=Len(PathString)To0Step-1
IfMid$(PathString,p,1)=”\”then
GetFileName=Right$(PathString,p)
ExitFunction
EndIf
Nextp
EndFunction->

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一些字符串操作的问题和回答_visualbasic教程
分享到: 更多 (0)

相关推荐

  • 暂无文章