在 .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

TrimEnd

该方法 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,

TrimStart

该方法 String.TrimStartString.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 删除指定数量的字符,这些字符从现有字符串中的指定位置开始。 此方法假定从零开始的索引。

以下示例从字符串从零开始索引位置 5 处的字符串中删除 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

另请参阅