string - with - ¿Algún método equivalente a PadLeft/PadRight?
padleft sql (5)
Me pregunto, ¿hay algún equivalente en los métodos PadLeft y PadRight de VBA a VB .NET?
A partir de ahora, cada vez que quiero tomar una cadena y hacerla de una longitud fija con espacios iniciales, hago un ciclo Para ... Siguiente basado en la longitud de la cadena.
Por ejemplo, usaría el siguiente código para formatear una cadena de 8 caracteres con espacios iniciales:
intOrdNoLen = Len(strOrdNo)
For i = 1 To (8 - intOrdNoLen) Step 1
strOrdNo = " " & strOrdNo
Next
¿Hay alguna forma de hacer lo mismo en menos líneas en VBA?
Como generalmente hacemos pad en el lado izquierdo, la función Format () es más corta, más simple:
Format(number, " ")
Format(number, "00")
No creo que PADRIGHT
funciones explícitas de PADLEFT
o PADRIGHT
, pero puede usar una combinación de SPACE
e LEFT
o RIGHT
para anteponer espacios a su cadena, y luego tomar el número X correcto de caracteres.
PADLEFT
strOrdNo = RIGHT(Space(8) & strOrdNo, 8)
Si quieres un personaje en lugar de espacios, puedes usar STRING
lugar de espacio (el ejemplo debajo de los left-pads con X):
strOrdNo = RIGHT(String(8, "X") & strOrdNo, 8)
PADRIGHT
strOrdNo = LEFT(strOrdNo & Space(8), 8)
strOrdNo = LEFT(strOrdNo & String(8, "X"), 8)
Puedes usar estos. Póngalos en un módulo público
''NB falla si la cadena de entrada es más larga que la longitud total
Function PadLeft(text As Variant, totalLength As Integer, padCharacter As String) As String
PadLeft = String(totalLength - Len(CStr(text)), padCharacter) & CStr(text)
End Function
Function PadRight(text As Variant, totalLength As Integer, padCharacter As String) As String
PadRight = CStr(text) & String(totalLength - Len(CStr(text)), padCharacter)
End Function
También puede usar cadenas de longitud fija en VBA:
Dim myString As String * 10
myString = "test"
Debug.Print myString, "(" & Len(myString) & ")" ''// Prints "test (10)"
aunque esto solo es útil para el relleno a la derecha.
Format("abc","!@@@@@@") '' width >= 6; pad right side with spaces
Format("abc","@@@@@@") '' width >= 6; pad left side with spaces