zhangkun0428
zhangkun0428
采纳率0%
2015-01-13 09:09 阅读 2.3k

按byte截取字符串问题

大神们,我遇到个问题,不知道大家有没有好的解决办法
VB程序输出一个字符串,用下面的方式处理的字符串
StrConv(MidB(StrConv(inputstring, vbFromUnicode), 1, 15), vbUnicode)
inputstring 是输入的字符串
是截取字符串前15byte,因为每个汉字是2个字节
在XP下,8个汉字的输入字符串,截取的结果是7个汉字+1个半角空格,正好是15byte
但是在windows7下,结果变成了7个汉字+1个"・","・"这个字符占了2个byte, 输出是16byte的字符串,结果出错了.
请问有什么简单的解决方法么
改程序什么的先不考虑,因为地方太多了,而且要重新发布,有没有什么改下环境之类的简单解决方案能解决这个问题呢,万分感谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • danielinbiti danielinbiti 2015-01-13 09:18

    如果你要截完整字符,是不是想复杂了,用strconv也就是中英文混合长度时用。如果截字符串个数
    直接Mid(inputstring, 1, 5),
    比如"7个汉字+1个",如果要到截取到”字“,那直接长度4就行了。如果要到1,那长度6

    点赞 1 评论 复制链接分享
  • xmt1139057136 业余草 2015-01-13 09:10

    vb好古老了,支持你

    点赞 评论 复制链接分享
  • Topc008 一如既往哈 2015-01-13 09:18

    如果inputstring 都是汉字,好办啊,直接取前7个汉字+空格

    点赞 评论 复制链接分享
  • Topc008 一如既往哈 2015-01-13 11:21

    那就用个函数来处理呗:

     Sub test()
        Dim w1 As String, Byt() As Byte, Byt1(14) As Byte, i As Integer
        w1 = "sf906=我们的祖国是个伟大的国家"
        Byt = StrConv(w1, vbFromUnicode)
        For i = 0 To 14
            Byt1(i) = Byt(i)
        Next
        Debug.Print StrConv(Byt1, vbUnicode)
    End Sub
    
    
    点赞 评论 复制链接分享

相关推荐