2009-10-29 94 views

Respuesta

15

2015: más reciente LINQ & lambda.

  1. Como esta es una antigua Q (y respuesta), pensé actualizarla con métodos más nuevos de 2015.
  2. El "espacio" original puede referirse a espacios en blanco no espaciales (es decir, tabulación, nueva línea, separador de párrafo, avance de línea, retorno de carro, etc., , etc.).
  3. Además, Trim() solo elimina los espacios de la parte frontal/posterior de la cadena, no elimina espacios dentro de la cadena; Por ejemplo: "Leading and Trailing Spaces" se convertirá en "Leading and Trailing Spaces", pero los espacios en el interior aún están presentes.

Function RemoveWhitespace(fullString As String) As String 
    Return New String(fullString.Where(Function(x) Not Char.IsWhiteSpace(x)).ToArray()) 
End Function 

Esto eliminará todos los -espacio (blanco), lo que lleva, por detrás y dentro de la cadena.

63

para eliminar todos los espacios:

myString = myString.Replace(" ", "") 

para eliminar líder y espacios finales:

myString = myString.Trim() 

Nota: esto elimina cualquier espacio en blanco, de modo nuevas líneas, pestañas, etc. sería eliminado .

+3

.Trim elimina los espacios en blanco de los caracteres. Puede que no sea lo que él quiere. – ElGringoGrande

+1

Gracias @ el.gringogrande. – David

+4

Reemplazar ("", vbNullString) puede funcionar un pelo más rápido, y (más importante) ser un poco más claro. YMMV. –

11

"Espacios" en la publicación original podría hacer referencia a espacios en blanco, y todavía no hay respuesta muestra cómo eliminar TODOS espacios en blanco de una cadena. Para eso, las expresiones regulares son el enfoque más flexible que he encontrado.

A continuación se muestra una aplicación de consola donde puede ver la diferencia entre reemplazar espacios o todos los espacios en blanco.

Puede encontrar más información sobre las expresiones regulares de .NET en http://msdn.microsoft.com/en-us/library/hs600312.aspx y http://msdn.microsoft.com/en-us/library/az24scfc.aspx

Imports System.Text.RegularExpressions 
Module TestRegExp 
    Sub Main() 
     ' Use to match all whitespace (note the lowercase s matters) 
     Dim regWhitespace As New Regex("\s") 

     ' Use to match space characters only 
     Dim regSpace As New Regex(" ") 

     Dim testString As String = "First Line" + vbCrLf + _ 
     "Second line followed by 2 tabs" + vbTab + vbTab + _ 
     "End of tabs" 

     Console.WriteLine("Test string :") 
     Console.WriteLine(testString) 

     Console.WriteLine("Replace all whitespace :") 
     ' This prints the string on one line with no spacing at all 
     Console.WriteLine(regWhitespace.Replace(testString, String.Empty)) 

     Console.WriteLine("Replace all spaces :") 
     ' This removes spaces, but retains the tabs and new lines 
     Console.WriteLine(regSpace.Replace(testString, String.Empty)) 

     Console.WriteLine("Press any key to finish") 
     Console.ReadKey() 
    End Sub 
End Module 
13

Para recortar una cadena hacia abajo de manera que no contiene dos o más espacios en una fila. Cada instancia de 2 o más espacios se reducirá a 1 espacio. Una solución simple:

While ImageText1.Contains(" ")      '2 spaces. 
    ImageText1 = ImageText1.Replace(" ", " ")  'Replace with 1 space. 
End While 
+1

¡gracias! esta es una solución genial –

2

También puede usar una pequeña función que recorrerá y eliminará cualquier espacio.

Esto es muy limpio y simple.

Public Shared Function RemoveXtraSpaces(strVal As String) As String 
    Dim iCount As Integer = 1 
    Dim sTempstrVal As String 

    sTempstrVal = "" 

    For iCount = 1 To Len(strVal) 
     sTempstrVal = sTempstrVal + Mid(strVal, iCount, 1).Trim 
    Next 

    RemoveXtraSpaces = sTempstrVal 

    Return RemoveXtraSpaces 

End Function 
+1

No es el que menosprecia, pero eso es completamente exagerado y contraproducente. Concatenas un personaje a la vez, llamando 'Trim' cada vez? Solo usa la respuesta aceptada. – LittleBobbyTables

+1

Me gustaría defender esta respuesta, ya que proporciona un medio para recorrer las cadenas de un extremo u otro, para eliminar solo un espacio en una ubicación determinada dentro de la cadena en lugar de en todos los espacios. Puede ser valioso para alguien que busca realizar una limpieza sin eliminar todos los espacios. – htm11h

0

Prueba este código para que trim un String

Public Function AllTrim(ByVal GeVar As String) As String 
    Dim i As Integer 
    Dim e As Integer 
    Dim NewStr As String = "" 
    e = Len(GeVar) 
    For i = 1 To e 
     If Mid(GeVar, i, 1) <> " " Then 
      NewStr = NewStr + Mid(GeVar, i, 1) 
     End If 
    Next i 
    AllTrim = NewStr 
    ' MsgBox("alltrim = " & NewStr) 
End Function 
1

Esto eliminará sólo espacios, coincide con la funcionalidad de SQL de rtrim (ltrim (miCadena))

Dim charstotrim() As Char = {" "c} 
myString = myString .Trim(charstotrim) 
1

¿Qué hay de la solución Regex.Replace?

myStr = Regex.Replace(myStr, "\s", "") 
Cuestiones relacionadas