我有一个字符串,我们称之为“S”,最多可以记录8位数字,我希望将它对齐成一个字符串,然后将文本文件对齐到8个空格(chr(32) ))
实施例。 (我在示例中添加了下划线来标记空白。
S="1234" should result in "____1234"
S="444444" should result in "__444444"
S="abc" should result in "_____abc"
为此,我将编写以下代码
Public Function feld(ByVal S As String, Optional I As Integer = 8) As String
Dim lenS As Integer = Strings.Len(S)
Dim vorS As Integer = I - lenS
Dim rez As String = ""
For x = 1 To vorS
rez += Strings.Chr(32)
Next
rez += S
Return rez
End Function
有更优雅的方法吗?
答案 0 :(得分:5)
你的 方式 太复杂了:
Public Function feld(ByVal S As String, Optional I As Integer = 8) As String
Return S.PadLeft(I)
End Function
有人想知道为什么你甚至需要一个新函数,除非你想要的行为不同于PadLeft()
在字符串太长的情况下使用的行为......但如果是这样的话,我们需要知道什么你在问题中想要的行为。
答案 1 :(得分:4)
您可以使用String.Format("{0,8}", s)
对齐结果右侧的输入字符串,该字符串将包含8个字符。
要对齐左侧的输入,请使用格式的负数。
有关详细信息,请参阅String.Format
方法文档中的控制格式和控制间距。
答案 2 :(得分:1)
其他解决方案:
Public Function AddBlanks(ByVal S As String, Optional L As Integer = 8) As String
return Microsoft.VisualBasic.Right(StrDup(L, " ") & S, L)
End Function
答案 3 :(得分:1)
(我希望你使用SQL,如果不只是避免这种情况)
如果你在SQL创建标量函数时这样做会更容易,你只需要左对齐所以我所做的就是(下面只是执行有示例,使用下面的代码去创建函数):
DECLARE @StringValue varchar(8)='123'
DECLARE @totalStringLength As Integer=8
DECLARE @ReplaceChar As char(1)='_'
DECLARE @stringLength As int
DECLARE @NewString As varchar(8)
DECLARE @ResultVal As varchar(8)
SET @stringLength = LEN(ISNULL(@StringValue,@ReplaceChar))
IF @stringLength >= @totalStringLength
Begin
SET @ResultVal = @StringValue
End
Else
Begin
SET @NewString = REPLICATE(@ReplaceChar, @totalStringLength - @stringLength) + ISNULL(@StringValue, @ReplaceChar)
SET @ResultVal = @NewString
End
select @ResultVal
现在,您可以创建存储过程或只调用您想要字符串值的函数。
这里我假设你已经创建了一个名为dbo.leftPAD的函数,只需在命令行上使用下面的代码
select dbo.leftpad(string.text,8,'_')
如果这不是你所看到的而不是抱歉并且原谅我的英语不好。
由于