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


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

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

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

Trim

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

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!        

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

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

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

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

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)

Этот код выводит на консоль значение He.

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

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)

Этот код выводит на консоль значение Hello,.

TrimStart

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

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

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)

Этот код выводит на консоль значение World!.

Удалить

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

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

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!        

Replace

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

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

См. также