VB中取字符子串的命令或函数是什么?急用!

wtfdnvxa 2002-04-19 06:04:16
VB中取字符子串的命令或函数是什么?急用!
...全文
1721 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
PluteWu 2002-04-22
  • 打赏
  • 举报
回复
樓上的朋友已都全列出了,靈活運用其,則字符子串就不怕取不出來了。
Mid(string, start[, length])
Left(string, length)
Right(string, length)
Split(expression[, delimiter[, count[, compare]]])
其返回值都為string,實質上再與一些instr等函數同用,功能更為強勁。如此,謝謝!
dyj_163_com 2002-04-21
  • 打赏
  • 举报
回复
mid()
left()
right()
split()

具体用法自己查MSDN
xxlroad 2002-04-20
  • 打赏
  • 举报
回复
split 很不错的函数
allan1031 2002-04-20
  • 打赏
  • 举报
回复
还有这里:



--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
allan1031 2002-04-20
  • 打赏
  • 举报
回复
split
可以分成若干个你要的字串
假如用left,right,mid的话都要结合到确定的算法
以下是几个有关字符串的操作---事先申明是转载自wxj_lake的收集和翻译:)


提问:
我如何才能数出一个字符串中的字母数?举例来说:我想在用户按下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 vWords() 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 net"
  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
wtfdnvxa 2002-04-20
  • 打赏
  • 举报
回复
谢谢大家!可我的分只能给你们其中的一位。
lovingkiss 2002-04-19
  • 打赏
  • 举报
回复
常用的东西一定要学会自己来查,Msdn基本上都可以找到相关的答案;
因为很多时候,这些问题可以提高你自己的自学能力;谢谢 ;
likesome 2002-04-19
  • 打赏
  • 举报
回复
建议
向这样的问题完全可以自己解决
查一下MSDN
就可以了
zyl910 2002-04-19
  • 打赏
  • 举报
回复

Right 函数


返回 Variant (String),其中包含从字符串右边取出的指定数量的字符。

语法

Right(string, length)

Right 函数的语法具有下面的命名参数:

部分 说明
string 必要参数。字符串表达式,从中最右边的字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。为数值表达式,指出想返回多少字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。


说明

欲知 string 的字符数,用 Len 函数。

注意 RightB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是指定返回的字符数。
zyl910 2002-04-19
  • 打赏
  • 举报
回复

Left 函数


返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。

语法

Left(string, length)

Left 函数的语法有下面的命名参数:

部分 说明
string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。


说明

欲知 string 的字符数,使用 Len 函数。

注意 LeftB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是要返回的字符数。
zyl910 2002-04-19
  • 打赏
  • 举报
回复

Mid 函数


返回 Variant (String),其中包含字符串中指定数量的字符。

语法

Mid(string, start[, length])

Mid 函数的语法具有下面的命名参数:

部分 说明
string 必要参数。字符串表达式,从中返回字符。如果 string 包含 Null,将返回 Null。
start 必要参数。为 Long。string 中被取出部分的字符位置。如果 start 超过 string 的字符数,Mid 返回零长度字符串 ("")。
length 可选参数;为 Variant (Long)。要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到尾端的所有字符。


说明

欲知 string 的字符数,可用 Len 函数。

注意 MidB 函数作用于字符串中包含的字节数据,如同在双字节字符集(DBCS)语言中一样。因此其参数指定的是字节数,而不是字符数。对于使用 MidB的示例代码,请参阅示例主题中的第二个示例。
wuwutao 2002-04-19
  • 打赏
  • 举报
回复
mid()
left()
right()

具体用法自己查MSDN
ctianqi 2002-04-19
  • 打赏
  • 举报
回复
str=mid(string,start as integer,length as integer)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧