首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在word宏中对字符串排序

在word宏中对字符串排序
EN

Stack Overflow用户
提问于 2013-05-22 11:50:07
回答 1查看 311关注 0票数 1

我需要帮助写一个函数,它将接受一个字符串数组和排序成一个新的字符串数组的基础上,只在字符串中的数字字符(升序)?假设我有以下字符串数组:

"abc53ddd", "2zzz2yyy", "14"

我需要他们被列为

"14", "2zzz2yyy" and "abc53ddd"

由于字符串中的数字字符是14, 22 and 53.,我可以将字符串分成数字部分并对数组进行排序,但我无法恢复剩余的字符以按正确的顺序列出它们……

EN

回答 1

Stack Overflow用户

发布于 2013-05-30 15:40:23

对断开连接的记录集使用ADO。参见http://technet.microsoft.com/en-us/library/ee176578.aspx。它是快速和健壮的。天哪,这是最好的。

代码语言:javascript
复制
'recordset definition
Dim rst As New ADODB.Recordset 'must be reference "Microsoft ActiveX Data Objects"
'OR use automation (without reference)
'Dim rst
'Set rst = CreateObject("ADOR.Recordset")

'fields definition - how many you want (name, type, lenght)
rst.Fields.Append "field1", ADODB.DataTypeEnum.adVarChar, 255
rst.Fields.Append "number", ADODB.DataTypeEnum.adInteger

rst.Open

'add values, for example:
Dim rc As ADODB.Record
rst.AddNew "field1", "abc53ddd"
rst.AddNew "field1", "2zzz2yyy"
rst.AddNew "field1", "14"

'make numbers from string and store in field [number]
Dim reg As New RegExp
'OR
'Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "\D" 'non-digit
reg.Global = True

rst.MoveFirst
Do Until rst.EOF
    rst!Number = Val(reg.Replace(rst!field1, "")) 'delete non-digit
    rst.MoveNext
Loop

'sort!
rst.Sort = "number ASC" 'sort by field1 ascending

'show output
rst.MoveFirst
Do Until rst.EOF
    Debug.Print rst!field1, rst!Number
    rst.MoveNext
Loop
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16683164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档