Поделиться через


Обрезка и удаление символов из строк в .NET

Если вы анализируете предложение на отдельные слова, вы можете в конечном итоге иметь пустые пробелы (также называемые пробелами) в любом конце слова. В этой ситуации можно использовать один из методов обрезки в System.String классе, чтобы удалить любое количество пробелов или других символов из указанной позиции в строке. В следующей таблице описаны доступные методы обрезки:

Имя метода Использование
String.Trim Удаляет пробелы или символы, указанные в массиве символов из начала и конца строки.
String.TrimEnd Удаляет символы, указанные в массиве символов, из конца строки.
String.TrimStart Удаляет символы, указанные в массиве символов в начале строки.
String.Remove Удаляет указанное число символов из указанной позиции индекса в строке.

Подстригать

Вы можете легко удалить пробелы из обеих сторон строки с помощью String.Trim метода, как показано в следующем примере:

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!        

Вы также можете удалить символы, указанные в массиве символов, с начала и конца строки. В следующем примере удаляются символы пробела, точки и звездочки:

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

ТримЭнд

Метод String.TrimEnd удаляет символы из конца строки, создавая новый объект строки. Массив символов передается этому методу, чтобы указать символы, которые нужно удалить. Порядок элементов в массиве символов не влияет на операцию обрезки. Обрезка останавливается при обнаружении символа, не указанного в массиве.

В следующем примере удаляются последние буквы строки с помощью TrimEnd метода. В этом примере позиция символа 'r' и 'W' символа обратно иллюстрируют, что порядок символов в массиве не имеет значения. Обратите внимание, что этот код удаляет последнее слово MyString плюс первой части.

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)

Этот код отображается He в консоли.

В следующем примере удаляется последнее слово строки с помощью TrimEnd метода. В этом коде запятая следует слову Hello , и потому что запятая не указана в массиве символов для обрезки, обрезка заканчивается запятой.

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)

Этот код отображается Hello, в консоли.

ТримСтарт

Метод String.TrimStart аналогичен String.TrimEnd методу, за исключением того, что он создает новую строку, удаляя символы с начала существующего объекта строки. Массив символов передается TrimStart методу, чтобы указать символы, которые нужно удалить. Как и в случае с методом TrimEnd , порядок элементов в массиве символов не влияет на операцию обрезки. Обрезка останавливается при обнаружении символа, не указанного в массиве.

В следующем примере удаляется первое слово строки. В этом примере позиция символа 'l' и 'H' символа обратно иллюстрируют, что порядок символов в массиве не имеет значения.

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)

Этот код отображается World! в консоли.

Удалить

Метод String.Remove удаляет указанное число символов, начинающихся с указанной позиции в существующей строке. Этот метод предполагает отсчитываемый от нуля индекс.

В следующем примере из строки удаляется 10 символов, начиная с позиции пяти из отсчитываемого от нуля индекса строки.

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!        

Заменить

Можно также удалить указанный символ или подстроку из строки, вызвав String.Replace(String, String) метод и указав пустую строку (String.Empty) в качестве замены. В следующем примере удаляются все запятые из строки:

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

См. также