Udostępnij za pośrednictwem


Przycinanie i usuwanie znaków z ciągów na platformie .NET

Jeśli analizujesz zdanie w pojedynczych słowach, możesz skończyć się wyrazami, które mają puste spacje (nazywane również białymi spacjami) na każdym końcu słowa. W takiej sytuacji można użyć jednej z metod trim w klasie System.String, aby usunąć dowolną liczbę spacji lub innych znaków z określonej pozycji w ciągu. W poniższej tabeli opisano dostępne metody przycinania:

Nazwa metody Użyj
String.Trim Usuwa białe spacje lub znaki określone w tablicy znaków od początku i na końcu ciągu.
String.TrimEnd Usuwa znaki określone w tablicy znaków z końca ciągu.
String.TrimStart Usuwa znaki określone w tablicy znaków od początku ciągu.
String.Remove Usuwa określoną liczbę znaków z określonej pozycji indeksu w ciągu.

Przyciąć

Można łatwo usunąć białe spacje z obu końców ciągu przy użyciu metody String.Trim, jak pokazano w poniższym przykładzie:

string MyString = " Big   ";
Console.WriteLine($"Hello{MyString}World!");
string TrimString = MyString.Trim();
Console.WriteLine($"Hello{TrimString}World!");
//       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!        

Można również usunąć znaki określone w tablicy znaków od początku i końca ciągu. Poniższy przykład usuwa znaki odstępu, kropki i gwiazdki:

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

Metoda TrimEnd

Metoda String.TrimEnd usuwa znaki z końca ciągu, tworząc nowy obiekt ciągu. Tablica znaków jest przekazywana do tej metody w celu określenia znaków, które mają zostać usunięte. Kolejność elementów w tablicy znaków nie ma wpływu na operację przycinania. Przycinanie zatrzymuje się, gdy zostanie znaleziony znak, który nie został określony w tablicy.

Poniższy przykład usuwa ostatnie litery ciągu przy użyciu metody TrimEnd. W tym przykładzie pozycja znaku 'r' i znaku 'W' są odwrócone, aby zilustrować, że kolejność znaków w tablicy nie ma znaczenia. Zwróć uwagę, że ten kod usuwa ostatnie słowo MyString plus część pierwszego.

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)

Ten kod wyświetla He na konsolę.

Poniższy przykład usuwa ostatnie słowo ciągu przy użyciu metody TrimEnd. W tym kodzie przecinek następuje po słowie Hello, a ponieważ przecinek nie jest określony w tablicy znaków do trimowania, trimowanie kończy się na przecinku.

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)

Ten kod wyświetla Hello, na konsolę.

TrymStart

Metoda String.TrimStart jest podobna do metody String.TrimEnd, z tą różnicą, że tworzy nowy ciąg, usuwając znaki od początku istniejącego obiektu ciągu. Tablica znaków jest przekazywana do metody TrimStart w celu określenia znaków do usunięcia. Podobnie jak w przypadku metody TrimEnd kolejność elementów w tablicy znaków nie ma wpływu na operację przycinania. Przycinanie zatrzymuje się, gdy zostanie znaleziony znak, który nie został określony w tablicy.

Poniższy przykład usuwa pierwsze słowo ciągu. W tym przykładzie pozycja znaku 'l' i znaku 'H' są odwrócone, aby zilustrować, że kolejność znaków w tablicy nie ma znaczenia.

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)

Ten kod wyświetla World! na konsolę.

Usuń

Metoda String.Remove usuwa określoną liczbę znaków rozpoczynających się od określonej pozycji w istniejącym ciągu. Metoda zakłada indeksowanie zaczynające się od zera.

Poniższy przykład usuwa 10 znaków z ciągu, zaczynając od pozycji piątej w zerowym indeksie.

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!        

Zamień

Można również usunąć określony znak lub podciąg z ciągu, wywołując metodę String.Replace(String, String) i określając pusty ciąg (String.Empty) jako zamianę. Poniższy przykład usuwa wszystkie przecinki z ciągu:

using System;

public class Example
{
   public static void Main()
   {
      String phrase = "a cold, dark night";
      Console.WriteLine($"Before: {phrase}");
      phrase = phrase.Replace(",", "");
      Console.WriteLine($"After: {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

Zobacz też