我有一个固定长度的字符串变量:
<VBFixedString(10)>
Public myVar As String
当我将var赋值给具有11个字符的值时,var会改变长度。
这就是我得到的:
myvar = "1234567890ABCD" ' result = myvar being "1234567890ABCD"
我想要的是myvar:“1234567890”
然后如果小于10我想
myvar = "12345" to be "12345 "
我可以用PadLeft PadRight做到这一点,但我想知道我是否可以将它声明为固定长度,它会为你处理所有这些。
答案 0 :(得分:2)
根据我的理解,VBFixedString
属性仅被某些基于文件的方法识别,以帮助构建写入/读取文件的内容。编译器不会将该属性用于其他任何事情,包括改变编译变量赋值的方式。
取自MSDN:
VBFixedStringAttribute是信息性的,不能用于 将可变长度字符串转换为固定字符串。的目的 这个属性是修改结构和非本地字符串的方式 变量由识别的方法或API调用使用 VBFixedStringAttribute。请记住,此属性不会 改变字符串本身的实际长度。
最后一句是重要的一点:
请记住,此属性不会更改字符串本身的实际长度。
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.vbfixedstringattribute.aspx
编辑1:
一个关于如何根据固定长度自动填充字符串的简单示例:
Function FixedLengthString(ByVal value As String, ByVal totalLength As Integer, ByVal padding As Char) As String
Dim length = value.Length
If (length > totalLength) Then Return value.Substring(0, totalLength)
Return value.PadRight(totalLength, padding)
End Function
在这里你可以传入一个字符串,如果字符串的长度大于指定的总长度,你将得到一个匹配该长度的字符串。任何更少的东西,你将得到字符串加上填充字符达到指定的总长度。
这可以通过错误检查来改进,并且可能使该方法成为扩展方法,因此您不必传递“value”。
答案 1 :(得分:2)
来自旧学校,LSET将完全按照您的要求行事。
myvar = lset("1234567890ABCD",10)
结果为“1234567890”,而
myvar = lset("12345",10)
导致“12345_ _ _” - 抱歉,编辑器在12345替换为下划线后修剪了空格