VB.NET特定的字符串格式

时间:2016-11-01 22:47:09

标签: .net vb.net string-formatting

我有一个字符串,我们称之为“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

有更优雅的方法吗?

4 个答案:

答案 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,'_')

如果这不是你所看到的而不是抱歉并且原谅我的英语不好。

由于