Tagliare e rimuovere caratteri dalle stringhe in .NET

Se si analizza una frase in singole parole, è possibile che si ottengano parole con spazi vuoti (detti anche spazi) in entrambe le estremità della parola. In questo caso, è possibile utilizzare uno dei metodi di rimozione nella classe System.String per rimuovere qualsiasi numero di spazi o altri caratteri da una posizione specificata nella stringa. La tabella seguente illustra i metodi di rimozione disponibili:

Nome metodo Utilizzo
String.Trim Rimuove gli spazi vuoti o i caratteri specificati in una matrice di caratteri all'inizio e alla fine di una stringa.
String.TrimEnd Rimuove i caratteri specificati in una matrice di caratteri alla fine di una stringa.
String.TrimStart Rimuove i caratteri specificati in una matrice di caratteri all'inizio di una stringa.
String.Remove Rimuove un numero specificato di caratteri da una posizione di indice specificata in una stringa.

Taglia

È possibile rimuovere facilmente gli spazi da entrambe le estremità di una stringa utilizzando il metodo String.Trim, come illustrato nell'esempio seguente:

String^ MyString = " Big   ";
Console::WriteLine("Hello{0}World!", MyString);
String^ TrimString = MyString->Trim();
Console::WriteLine("Hello{0}World!", TrimString);
// The example displays the following output:
//       Hello Big   World!
//       HelloBigWorld!        
string MyString = " Big   ";
Console.WriteLine("Hello{0}World!", MyString);
string TrimString = MyString.Trim();
Console.WriteLine("Hello{0}World!", TrimString);
//       The example displays the following output:
//             Hello Big   World!
//             HelloBigWorld!
Dim MyString As String = " Big   "
Console.WriteLine("Hello{0}World!", MyString)
Dim TrimString As String = MyString.Trim()
Console.WriteLine("Hello{0}World!", TrimString)
' The example displays the following output:
'       Hello Big   World!
'       HelloBigWorld!        

È anche possibile rimuovere i caratteri specificati in una matrice di caratteri all'inizio e alla fine di una stringa. Nell'esempio seguente vengono rimossi gli spazi vuoti, i punti e gli asterischi:

using System;

public class Example
{
   public static void Main()
   {
      String header = "* A Short String. *";
      Console.WriteLine(header);
      Console.WriteLine(header.Trim( new Char[] { ' ', '*', '.' } ));
   }
}
// The example displays the following output:
//       * A Short String. *
//       A Short String
Module Example
    Public Sub Main()
        Dim header As String = "* A Short String. *"
        Console.WriteLine(header)
        Console.WriteLine(header.Trim({" "c, "*"c, "."c}))
    End Sub
End Module
' The example displays the following output:
'       * A Short String. *
'       A Short String

TrimEnd

Il metodo String.TrimEnd rimuove caratteri alla fine di una stringa, creando un nuovo oggetto stringa. Una matrice di caratteri viene passata a questo metodo per specificare i caratteri da rimuovere. L'ordine degli elementi nella matrice di caratteri non influenza l'operazione di rimozione. La rimozione si interrompe quando viene trovato un carattere non specificato nella matrice.

L'esempio seguente rimuove le ultime lettere di una stringa con il metodo TrimEnd. In questo esempio, la posizione dei caratteri 'r' e 'W' viene invertita per indicare che l'ordine dei caratteri nella matrice non è importante. Si noti che questo codice rimuove l'ultima parola di MyString e una parte della prima parola.

String^ MyString = "Hello World!";
array<Char>^ MyChar = {'r','o','W','l','d','!',' '};
String^ NewString = MyString->TrimEnd(MyChar);
Console::WriteLine(NewString);
string MyString = "Hello World!";
char[] MyChar = {'r','o','W','l','d','!',' '};
string NewString = MyString.TrimEnd(MyChar);
Console.WriteLine(NewString);
Dim MyString As String = "Hello World!"
Dim MyChar() As Char = {"r", "o", "W", "l", "d", "!", " "}
Dim NewString As String = MyString.TrimEnd(MyChar)
Console.WriteLine(NewString)

Il codice visualizza He nella console.

L'esempio seguente rimuove l'ultima parola di una stringa con il metodo TrimEnd. In questo codice la parola Hello è seguita da una virgola: dato che la virgola non è specificata nella matrice di caratteri da tagliare, l'operazione di rimozione termina in corrispondenza della virgola.

String^ MyString = "Hello, World!";
array<Char>^ MyChar = {'r','o','W','l','d','!',' '};
String^ NewString = MyString->TrimEnd(MyChar);
Console::WriteLine(NewString);
string MyString = "Hello, World!";
char[] MyChar = {'r','o','W','l','d','!',' '};
string NewString = MyString.TrimEnd(MyChar);
Console.WriteLine(NewString);
Dim MyString As String = "Hello, World!"
Dim MyChar() As Char = {"r", "o", "W", "l", "d", "!", " "}
Dim NewString As String = MyString.TrimEnd(MyChar)
Console.WriteLine(NewString)

Il codice visualizza Hello, nella console.

TrimStart

Il metodo String.TrimStart è simile al metodo String.TrimEnd ma crea una nuova stringa rimuovendo caratteri dall'inizio di un oggetto stringa esistente. Una matrice di caratteri viene passata a questo metodo TrimStart per specificare i caratteri da rimuovere. Come per il metodo TrimEnd, l'ordine degli elementi nella matrice di caratteri non è importante per l'operazione di rimozione. La rimozione si interrompe quando viene trovato un carattere non specificato nella matrice.

L'esempio seguente rimuove la prima parola di una stringa. In questo esempio, la posizione dei caratteri 'l' e 'H' viene invertita per indicare che l'ordine dei caratteri nella matrice non è importante.

String^ MyString = "Hello World!";
array<Char>^ MyChar = {'e', 'H','l','o',' ' };
String^ NewString = MyString->TrimStart(MyChar);
Console::WriteLine(NewString);
string MyString = "Hello World!";
char[] MyChar = {'e', 'H','l','o',' ' };
string NewString = MyString.TrimStart(MyChar);
Console.WriteLine(NewString);
Dim MyString As String = "Hello World!"
Dim MyChar() As Char = {"e", "H", "l", "o", " "}
Dim NewString As String = MyString.TrimStart(MyChar)
Console.WriteLine(NewString)

Il codice visualizza World! nella console.

Rimuovi

Tramite il metodo String.Remove viene rimosso un numero specificato di caratteri a partire da una posizione specificata in una stringa esistente. Questo metodo presuppone un indice a base zero.

L'esempio seguente rimuove dieci caratteri da una stringa a partire dalla posizione cinque di un indice a base zero della stringa.

String^ MyString = "Hello Beautiful World!";
Console::WriteLine(MyString->Remove(5,10));
// The example displays the following output:
//         Hello World!        
string MyString = "Hello Beautiful World!";
Console.WriteLine(MyString.Remove(5,10));
// The example displays the following output:
//         Hello World!
Dim MyString As String = "Hello Beautiful World!"
Console.WriteLine(MyString.Remove(5, 10))
' The example displays the following output:
'         Hello World!        

Sostituzione

È anche possibile rimuovere da una stringa una sottostringa o un carattere specificato chiamando il metodo String.Replace(String, String) e specificando, in sostituzione, una stringa vuota (String.Empty). Nell'esempio seguente vengono rimosse tutte le virgole da una stringa:

using System;

public class Example
{
   public static void Main()
   {
      String phrase = "a cold, dark night";
      Console.WriteLine("Before: {0}", phrase);
      phrase = phrase.Replace(",", "");
      Console.WriteLine("After: {0}", phrase);
   }
}
// The example displays the following output:
//       Before: a cold, dark night
//       After: a cold dark night
Module Example
    Public Sub Main()
        Dim phrase As String = "a cold, dark night"
        Console.WriteLine("Before: {0}", phrase)
        phrase = phrase.Replace(",", "")
        Console.WriteLine("After: {0}", phrase)
    End Sub
End Module
' The example displays the following output:
'       Before: a cold, dark night
'       After: a cold dark night

Vedi anche