vb怎么取得想要的vb 查找字符串 并把它放到数组中

VB中在文本中输入一段字符串,怎么分别提取出各个字符给一个数组_百度知道
VB中在文本中输入一段字符串,怎么分别提取出各个字符给一个数组
eg:文本1中输入abcd,希望得到数组A(3)A0=AA1=BA2=CA3=D
我的用EXCEL编的VBADim A() As StringDim i As IntegerDim ry As StringDim n As Integerry = Range(&b1&).Valuei = Len(ry)For n = 0 To i - 1A(n) = Mid(ry, n, 1)——依照下面那位兄弟的修正~~Range(&b(15+n)&).Value = A(n)Next目前以下回答测试有的提示 下标越界~~~~~求解~一直提示下标越界要么range(b15+n)错误~~不能用~~
我有更好的答案
Option ExplicitDim a() As StringDim n As IntegerPrivate Sub Command1_Click()ReDim a(Len(Text1.Text))For n = 1 To Len(Text1.Text)a(n) = Mid(Text1.Text, n, 1)Print a(n)Next nEnd Sub有问题再找我。
采纳率:33%
LZ求的是VBA的答案?选中你输入字符串的单元格,然后运行Option ExplicitSub subSplit()
Dim strInput As String
Dim strOutPut() As String
Dim i As Integer
Dim nLen As Integer
strInput = Selection.Text
nLen = Len(strInput)
ReDim strOutPut(nLen - 1) As String
For i = 0 To UBound(strOutPut)
strOutPut(i) = Mid(strInput, i + 1, 1)
Debug.Print strOutPut(i)
NextEnd Sub
你读出的文本为 s
string如果你能保证每行都有=号,下面代码可用,你试一下dim A() as string A=split(s,vbcr)dim i as integer for i =0 to ubound(A)a(i)=split(a,&=&)(1)next'现在的A()就是你要的。
试试我的。。。。。Dim a$(), i%, ry$
ry = Range(&b1&).Value
If ry = && Then Exit Sub
ReDim a(Len(ry) - 1)
For i = 0 To UBound(a)
a(i) = Mid(ry, i + 1, 1)
Range(&b& & (15 + i)).Value = a(i)
dim A(3) as stringFor i=0 to 3A(i)=mid(Text1.Text,i+1,1)Next 这样就可以了
A(n) = Mid(ry, n, n + 1)
==》A(n)=Mid(ry,n,1)MID(string,start,Len)string 为字符串Start为第几个字符开始截取Len 为截取长度
其他5条回答
为您推荐:
其他类似问题
字符串的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如果您有什么建议或想投稿,请联系 QQ:
一、 前言    数据类型转换在编程中经常用到,VB6提供了一整套类型转换的函数。但是,在进行类型转换时,有时候仅仅依靠VB提供的函数是不能达到自己的目的的。因此,需要考虑用其他的方法来完成数据类型转换。本文仅谈VB6中字节数组和字符串的相互转换过程中应注意的问题及其解决办法。    在Visual Basic中使用Byte数组主要是为了32位API函数的参数传递和函数的返回。在32位的Visual Basic版本中,字符串被假定为Unicode字符,其中每个字符占用两个字节。系统自动地将Unicode的两个连续字节转换成1个字节的ANSI字符。但是,如果该字符串包含二进制数据,其内容将变得很难理解。例如,一个汉字是两个字节,在Visual Basic 6.0中的长度就只是1,这将给我们计算单个汉字的国标码带来一些麻烦。有了Byte数组,这些问题就将迎刃而解。    另外,Visual Basic中的字符串和C语言中的字符串有一些不同,本文将给出一个函数,把C字符串转换成Visual Basic字符串。 二、 用Byte数组代替字符串    Byte数组包含的是0-255之间的ASCII码字符,它不会象字符串那样被系统作预处理。你可以在很多API函数中用来Byte数组代替字符串。    例如,下面的代码中用GetSystemDirectory这个Windows API函数来取得Windows的系统路径。一共有两段代码,一段代码是传递一个字符串来存储函数返回的系统路径,另一段代码是传递一个Byte数组来代替字符串。    为了更好地比较,两段代码的不同部分都用黑体标出。读者可以仔细比较这两段代码的差异,这样您会更深入地理解Byte数组和字符串的差别。    把这两段代码的任何一段放入一个窗体中运行,但击窗体的空白区域,你将会在窗体中看到Windows的系统路径。    下面是使用字符串的代码:
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Sub Form_Click()   Dim n As Integer   Dim str As String   str = Space$(<font color="#6)   n = GetSystemDirectory(str, <font color="#6)   str = Left$(str, n)   Print str End Sub
   在上面这段代码中,字符串参数lpBuffer返回Windows的系统路径。在函数调用之前,将变量预定义成256个字符,并在函数返回时清除多余的字符。 注意:   在调用API函数之前,通常都需要预先定义一个字符串或者Byte数组以供API函数存储数据。应该养成这种良好的编程习惯。否则,你的程序有可能崩溃,甚至导致你的系统崩溃。    下面是使用Byte数组的代码:
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByRef lpBuffer As Byte, ByVal nSize As Long) As Long Private Sub Form_Click()   Dim n As Integer   Dim Buffer() As Byte   Dim strA as String   Buffer=Space$(<font color="#6)   n = GetSystemDirectory(Buffer(<font color="#), <font color="#6)   strA=StrConv(Buffer,vbUnicode)   strA = Left$(strA, n)   Print strA End Sub
   不知道读者注意到没有,第二段代码中的GetSystemDirectory API函数的声明已经改变了。第一个参数的声明由一个ByVal字符串变成了一个ByRef的Byte数组,即由声明: ByVal lpBuffer As String 变成了 ByRef lpBuffer As Byte   传递字符串时,需要一个ByVal修饰符来把字符串缓冲区传递到API函数中,因为字符串变量实际上指示了字符串内容所在的内存地址。在C语言术语中,这代表了一个指向指针的指针。ByVal意味着被传递的是一个指向实际字符串内容的内存地址。而在传递Byte数组Buffer(0)时,使用ByRef修饰符来传递变量,它相当于传递了数组中第一个字节内容的地址。事实上,这两种结果是一样的。 strA=StrConv(Buffer,vbUnicode)   这行代码把Byte数组的二进制数据转换成一个合法的Visual Basic字符串。 三、 Byte数组和字符串之间的赋值    为了简化Byte数组和字符串之间的数据传递,允许你在任何动态Byte数组和任何字符串之间直接互相赋值。例如: Buffer=strA 和 StrA=Buffer注意:    当且仅当Byte数组是动态的,而不是固定大小时,你才可以把一个字符串直接赋给一个Byte数组。    声明一个动态的Byte数组最简单的方法是在Dim语句中使用空参数,例如: Dim Buffer() as Byte   当你把一个字符串赋给一个动态Byte数组时,数组中的字符数将是字符串的字符数目的两倍。这是因为Visual Basic中字符串使用Unicode,并且每个Unicode字符的实际大小是两个字节。当把一个ASCII字符转换成一个Byte数组时,数组中的另一个字节将是0。    向Unicode的转换是将每个在缓冲区中的字符转换成2个字节,从而实际上加倍了存储在结果字符串的中字节数目,当你认为函数Len(strA)得到的尺寸大小和Unicode转换后的Ubound(Buffer)函数所返回的尺寸大小相同时,上述特点就不很明显了。但是,函数LenB(strA)确实返回一个2倍于Len(strA)返回值的数值。这是因为Len函数返回的是字符串中字符的数目,而LenB函数返回的是字符串中字节的数目。一个Unicode串的字符长度仅仅是该串中实际字节数目的一半,这是因为每个Unicode字符2个字节。 四、 字符串转换成VB字符串    当我们在VB中调用Win32 API函数时,如果函数的返回值是一个字符串,那一般有如下三种情况:    1. 函数预先要求你提
供一个有固定空间的字符串,以供存储函数的返回值。    2. 函数的返回是一个以Null结尾的C字符串,而不是正规的VB字符串。    3. Win32 API函数有时候会返回另一种类型的字符串。这种类型的字符串在单个缓冲区内保存了多个字符串值,每个值之间用Null隔开,结尾的是两个Null,一个Null是最后一个字符串值的结尾符,另一个Null是整个字符串的结尾符。这其实就是我们通常在C中遇到的字符串数组。    第一种情况很好办,只无原则预先定义好一个空间足够大的字符串,然后把API函数的返回值赋于这个字符串就可以了。例如,如果你已经知道函数返回值最多不会走过256个字符,可以这样编码如下:
Dim sAPIReturn as string SAPIReturn=Space$(<font color="#6) SAPIReturn=API_Function(…)
   对于第二和第三种情况,就必须把返回的C字符串成标准的VB字符串。下面这个函数CStringToVBString把一个以Null结尾的C字符串成VB字符串。
Public Function CStringToVBString(psCString As String) As string   '参数psCString是一个待转换的C字符串   '函数返回Null左边所有的字符   dim sReturn as string   dim iNullCharPos As Integer   iNullCharPos=InStr(psCString,vbNullChar)   if iNullCharPos ><font color="# then    sReturn =left(psCString, iNullCharPos -<font color="#)   else    sReturn =pscstring   end if   CStringToVBString=sReturn End function
   下面这个过程把一个含有多个C字符串的缓冲区转换成一个字符串数组。
Public Sub MultiCStringToStringArray(psMultiCString As String, psaStrings() As String)   '参数psMultiCString是待转换的多个C字符串   '参数psaStrings是返回的VB字符串数组,调用之前它必须是一个动态的空数组   Dim iNullPos As Integer   Dim iPrevPos As Integer   Dim iIdx As Integer   '初始化字符串数组   iIdx = <font color="#   ReDim psaStrings(<font color="# To iIdx <font color="#)   psaStrings(iIdx <font color="#) = ""   Do    iNullPos = InStr(iPrevPos <font color="#, psMultiCString, vbNullChar)    If iNullPos > iPrevPos <font color="# Then     '把找到的C字符串赋值给字符串数组     psaStrings(iIdx) = Mid$(psMultiCString, (iPrevPos <font color="#), ((iNullPos - <font color="#) - iPrevPos))     iIdx = iIdx <font color="#     ReDim Preserve psaStrings(<font color="# To iIdx)     iPrevPos = iNullPos    Else     '找到了两个Null字符,去掉最后一个,然后退出     ReDim Preserve psaStrings(<font color="# To iIdx - <font color="#)     Exit Do    End If   Loop End Sub
   当调用Win32 API函数时,使用这两个简单的函数,你可以消除很多冗余的代码,加快开发步伐。 注意:   当你为API的返回值预先分配字符串的空间时,一定不要忘了空间内必须包含Null结束符。另外,建议你在使用API时,最好对每个变量都进行声明,加上下面这句代码: Option Explicit五、小结   VB6中字节数组和字符串的相互转换是编程中,尤其是新手使用中最为头疼的问题。本文归纳了软件开发过程中使用二者的典型情况及其应该注意的问题,供参考。不当之处还请读者批评指正。
本篇文章没有Trackback
THEME DESIGN BY JEZZZZ & MUGEE用VB如何把文本文件中的数字存入数值数组,请高手指点下。
[问题点数:40分]
本版专家分:0
CSDN今日推荐
本版专家分:5
本版专家分:0
本版专家分:6135
2011年9月 VB大版内专家分月排行榜第三
本版专家分:0
本版专家分:0
本版专家分:862
匿名用户不能发表回复!|
CSDN今日推荐VB中将一个字符串分解赋值给一个数组,请进去看例子 (求解送分)
[问题点数:50分,结帖人hhhyyy]
本版专家分:3
结帖率 95.45%
CSDN今日推荐
本版专家分:246
本版专家分:2380
本版专家分:2380
本版专家分:3629
2000年11月 VB大版内专家分月排行榜第三
本版专家分:3
结帖率 95.45%
匿名用户不能发表回复!|
CSDN今日推荐

我要回帖

更多关于 vb 字符转数字 的文章

 

随机推荐