以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 排序问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176608)
|
-- 作者:hongye
-- 发布时间:2022/4/20 8:59:00
-- 排序问题
此主题相关图片如下:01.jpg
tv.BuildTree("面料规格表", "规格类别|名称|规格", "","规格类别,代码") 如图,在图片中C8S被排在最后,是因为在C后面的数字8最大,排序并没有考虑字符串的长度 请问有什么办法或者代码让它按照我们常规的排序呢(也就是C8S,C10S....)
|
-- 作者:有点蓝
-- 发布时间:2022/4/20 9:02:00
--
字符串是从左到右排序的,所以“A1”比“A10小”,“A10”比“A2”小,如果要字符串按数值排序,需要补齐,比如“A1”改为“A01”、“A2”改为“A02”,就可以按"A01、A02、....、A10"正常排序了。
|
-- 作者:hongye
-- 发布时间:2022/4/20 9:10:00
--
但是这些字符串是特定的,而且并不是单一的,怎么办呢,如果改为08的话性质就完全不一样了啊
|
-- 作者:有点蓝
-- 发布时间:2022/4/20 9:12:00
--
另外增加一个排序列,手工排好序
|
-- 作者:hongye
-- 发布时间:2022/4/20 9:13:00
--
是不是只能手工排序吗?
|
-- 作者:hongye
-- 发布时间:2022/4/20 11:06:00
--
我在想,有没有代码能将这里的数字补齐比如说C8S,补齐后变成C008S;C40S,补齐后变成C040S;T75D/SF20D,补齐后变成T075D/SF020D 如果有这个代码怎么写
|
-- 作者:有点蓝
-- 发布时间:2022/4/20 11:16:00
--
如果数据没有什么规律,没有办法处理,建议增加排序列
|
-- 作者:hongye
-- 发布时间:2022/4/20 11:23:00
--
有没有办法用IsLetter 和IsDigit来处理呢?
|
-- 作者:有点蓝
-- 发布时间:2022/4/20 11:44:00
--
Dim s As String = "T75D/SF20D" Dim p As String = "\\D+" Dim r As New System.Text.RegularExpressions.Regex(p) Dim str = r.Split(s) For Each a As String In str If a > "" Then s = s.Replace(a, a.PadLeft(3, "0")) End If Next msgbox(s)
|
-- 作者:hongye
-- 发布时间:2022/4/20 14:22:00
--
Dim s As String = "T75D/SF20D" Dim p As String = "\\D+" Dim r As New System.Text.RegularExpressions.Regex(p) Dim str = r.Split(s) For Each a As String In str If a > "" Then s = s.Replace(a, a.PadLeft(3, "0")) End If Next msgbox(s)
请问这两句是什么意思?
|