以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  想达到每一列左对齐,请老师指教!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186814)

--  作者:xxfoxtable
--  发布时间:2023/5/31 0:47:00
--  想达到每一列左对齐,请老师指教!
想达到每一列左对齐,请老师指教!
Dim Multi As String = "旋复花10g,前胡10g,荆芥穗15g,麻黄10g,赤芍30g,炙干草10g,姜半夏10g,桔梗15g,陈皮10g,白前2g,百部20g"
Dim ss As String
Dim Values() As String
Values = Multi.split(",")
Dim js As Integer = 1
For Index As Integer = 0 To Values.Length - 1
    ss = ss & Values(Index).PadRight(12)
    If js Mod 4 = 0 Then 
        ss = ss & vbcrlf
    End If
    js = js + 1
Next
output.show(ss)


--  作者:有点蓝
--  发布时间:2023/5/31 8:47:00
--  
这个没有办法,因为每种字符(中文,数字,英文)的宽度都不一样。

除非全部转换为全角字符,注意空格也要全角的

……
ss = ss & StrToWide(Values(Index)).PadRight(12, " ")
……


--  作者:xxfoxtable
--  发布时间:2023/5/31 8:57:00
--  
全角太难看了,老师还有其他变向的方法吗?
--  作者:有点蓝
--  发布时间:2023/5/31 9:00:00
--  
没有其它办法
--  作者:cd_tdh
--  发布时间:2023/5/31 9:12:00
--  
借用群里面朋友写的,发出来方便下次好找
Dim 字符串 As String = "旋复花10g,前胡10g,荆芥穗15g,麻黄10g,赤芍30g,炙干草10g,姜半夏10g,桔梗15g,陈皮10g,白前2g,百部20g"
Dim 字符组() As String = 字符串.Split (",")
Dim 字符长度集 As New List(Of Integer)
For Each 字符 As String In 字符串.split(",") \'循环数组,得到字符组的长度
    字符长度集.add(UKey.LenStrA(字符)) \'UKey有一个函数LenStrA,用计算字符串的字节长度(不能直接用字符长度集.add(Len(字符)))
Next
Dim 最大值 As Integer = 字符长度集.max
Dim 分组位数 As Integer = 4
Dim 集合型集合 As New List(Of List(Of String))
For 组头序号 As Integer = 0 To 字符组.Count - 1 Step 分组位数
    Dim 字符型集合 As New List(Of String)
    For 组内序号 As Integer = 0 To 分组位数 - 1
        Dim 总序号 As Integer = 组头序号 + 组内序号
        If 总序号 < 字符组.Count Then
    Dim 补全空白字符数 As Integer = 最大值 - UKey.LenStrA(字符组(组头序号 + 组内序号))
            字符型集合.Add(字符组(组头序号 + 组内序号) + Space(补全空白字符数 + 5))
        End If 
    Next
    集合型集合.Add(字符型集合)
Next
For Each 集合 As List(Of String) In 集合型集合
    Output.Show (String.Join ("", 集合))
Next
[此贴子已经被作者于2023/5/31 9:12:13编辑过]

--  作者:有点蓝
--  发布时间:2023/5/31 9:30:00
--  
图片点击可在新窗口打开查看