String.EndsWith 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确定此字符串实例的结尾是否与指定的字符串匹配。
重载
| EndsWith(String, Boolean, CultureInfo) | 确定在使用指定的区域性进行比较时此字符串实例的结尾是否与指定的字符串匹配。 | 
| EndsWith(String, StringComparison) | 确定使用指定的比较选项进行比较时此字符串实例的结尾是否与指定的字符串匹配。 | 
| EndsWith(Char) | 确定此字符串实例的结尾是否与指定的字符匹配。 | 
| EndsWith(String) | 确定此字符串实例的结尾是否与指定的字符串匹配。 | 
EndsWith(String, Boolean, CultureInfo)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定在使用指定的区域性进行比较时此字符串实例的结尾是否与指定的字符串匹配。
public:
 bool EndsWith(System::String ^ value, bool ignoreCase, System::Globalization::CultureInfo ^ culture);public bool EndsWith (string value, bool ignoreCase, System.Globalization.CultureInfo? culture);public bool EndsWith (string value, bool ignoreCase, System.Globalization.CultureInfo culture);member this.EndsWith : string * bool * System.Globalization.CultureInfo -> boolPublic Function EndsWith (value As String, ignoreCase As Boolean, culture As CultureInfo) As Boolean参数
- value
- String
要与此实例末尾的子字符串进行比较的字符串。
- ignoreCase
- Boolean
若要在比较过程中忽略大小写,则为 true;否则为 false。
- culture
- CultureInfo
确定如何对此实例与 value 进行比较的区域性信息。 如果 culture 为 null,则使用当前区域性。
返回
如果 true 参数与此字符串的末尾匹配,则为 value;否则为 false。
例外
              value 为 null。
示例
以下示例确定字符串是否出现在另一个字符串的末尾。 使用 EndsWith 区分大小写、不区分大小写以及影响搜索结果的不同区域性多次调用 方法。
// This code example demonstrates the 
// System.String.EndsWith(String, ..., CultureInfo) method.
using System;
using System.Threading;
using System.Globalization;
class Sample 
{
    public static void Main() 
    {
        string msg1 = "Search for the target string \"{0}\" in the string \"{1}\".\n";
        string msg2 = "Using the {0} - \"{1}\" culture:";
        string msg3 = "  The string to search ends with the target string: {0}";
        bool result = false;
        CultureInfo ci;
        // Define a target string to search for.
        // U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
        string capitalARing = "\u00c5";
        // Define a string to search. 
        // The result of combining the characters LATIN SMALL LETTER A and COMBINING 
        // RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
        // LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
        string xyzARing = "xyz" + "\u0061\u030a";
        // Display the string to search for and the string to search.
        Console.WriteLine(msg1, capitalARing, xyzARing);
        // Search using English-United States culture.
        ci = new CultureInfo("en-US");
        Console.WriteLine(msg2, ci.DisplayName, ci.Name);
        Console.WriteLine("Case sensitive:");
        result = xyzARing.EndsWith(capitalARing, false, ci);
        Console.WriteLine(msg3, result);
        Console.WriteLine("Case insensitive:");
        result = xyzARing.EndsWith(capitalARing, true, ci);
        Console.WriteLine(msg3, result);
        Console.WriteLine();
        // Search using Swedish-Sweden culture.
        ci = new CultureInfo("sv-SE");
        Console.WriteLine(msg2, ci.DisplayName, ci.Name);
        Console.WriteLine("Case sensitive:");
        result = xyzARing.EndsWith(capitalARing, false, ci);
        Console.WriteLine(msg3, result);
        Console.WriteLine("Case insensitive:");
        result = xyzARing.EndsWith(capitalARing, true, ci);
        Console.WriteLine(msg3, result);
    }
}
/*
This code example produces the following results (for en-us culture):
Search for the target string "Å" in the string "xyza°".
Using the English (United States) - "en-US" culture:
Case sensitive:
  The string to search ends with the target string: False
Case insensitive:
  The string to search ends with the target string: True
Using the Swedish (Sweden) - "sv-SE" culture:
Case sensitive:
  The string to search ends with the target string: False
Case insensitive:
  The string to search ends with the target string: False
*/
// This code example demonstrates the 
// System.String.EndsWith(String, ..., CultureInfo) method.
open System.Globalization
[<EntryPoint>]
let main _ =
    // Define a target string to search for.
    // U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
    let capitalARing = "\u00c5"
    // Define a string to search. 
    // The result of combining the characters LATIN SMALL LETTER A and COMBINING 
    // RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
    // LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
    let xyzARing = "xyz" + "\u0061\u030a"
    // Display the string to search for and the string to search.
    printfn $"Search for the target string \"{capitalARing}\" in the string \"{xyzARing}\".\n"
    // Search using English-United States culture.
    let ci = CultureInfo "en-US"
    printfn $"Using the {ci.DisplayName} - \"{ci.Name}\" culture:"
    printfn "Case sensitive:"
    let result = xyzARing.EndsWith(capitalARing, false, ci)
    printfn $"  The string to search ends with the target string: {result}"
    printfn "Case insensitive:"
    let result = xyzARing.EndsWith(capitalARing, true, ci)
    printfn $"  The string to search ends with the target string: {result}\n"
    // Search using Swedish-Sweden culture.
    let ci = CultureInfo "sv-SE"
    printfn $"Using the {ci.DisplayName} - \"{ci.Name}\" culture:"
    printfn "Case sensitive:"
    let result = xyzARing.EndsWith(capitalARing, false, ci)
    printfn $"  The string to search ends with the target string: {result}"
    printfn "Case insensitive:"
    let result = xyzARing.EndsWith(capitalARing, true, ci)
    printfn $"  The string to search ends with the target string: {result}"
    0
(*
This code example produces the following results (for en-us culture):
Search for the target string "Å" in the string "xyza°".
Using the English (United States) - "en-US" culture:
Case sensitive:
  The string to search ends with the target string: False
Case insensitive:
  The string to search ends with the target string: True
Using the Swedish (Sweden) - "sv-SE" culture:
Case sensitive:
  The string to search ends with the target string: False
Case insensitive:
  The string to search ends with the target string: False
*)
' This code example demonstrates the 
' System.String.EndsWith(String, ..., CultureInfo) method.
Imports System.Threading
Imports System.Globalization
Class Sample
    Public Shared Sub Main() 
        Dim msg1 As String = "Search for the target string ""{0}"" in the string ""{1}""." & vbCrLf
        Dim msg2 As String = "Using the {0} - ""{1}"" culture:"
        Dim msg3 As String = "  The string to search ends with the target string: {0}"
        Dim result As Boolean = False
        Dim ci As CultureInfo
        
        ' Define a target string to search for.
        ' U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
        Dim capitalARing As String = "Å"
        
        ' Define a string to search. 
        ' The result of combining the characters LATIN SMALL LETTER A and COMBINING 
        ' RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
        ' LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
        Dim xyzARing As String = "xyz" & "å"
               
        ' Display the string to search for and the string to search.
        Console.WriteLine(msg1, capitalARing, xyzARing)
        
        ' Search using English-United States culture.
        ci = New CultureInfo("en-US")
        Console.WriteLine(msg2, ci.DisplayName, ci.Name)
        
        Console.WriteLine("Case sensitive:")
        result = xyzARing.EndsWith(capitalARing, False, ci)
        Console.WriteLine(msg3, result)
        
        Console.WriteLine("Case insensitive:")
        result = xyzARing.EndsWith(capitalARing, True, ci)
        Console.WriteLine(msg3, result)
        Console.WriteLine()
        
        ' Search using Swedish-Sweden culture.
        ci = New CultureInfo("sv-SE")
        Console.WriteLine(msg2, ci.DisplayName, ci.Name)
        
        Console.WriteLine("Case sensitive:")
        result = xyzARing.EndsWith(capitalARing, False, ci)
        Console.WriteLine(msg3, result)
        
        Console.WriteLine("Case insensitive:")
        result = xyzARing.EndsWith(capitalARing, True, ci)
        Console.WriteLine(msg3, result)
    
    End Sub
End Class
'This code example produces the following results (for en-us culture):
'
'Search for the target string "Å" in the string "xyza°".
'
'Using the English (United States) - "en-US" culture:
'Case sensitive:
'  The string to search ends with the target string: False
'Case insensitive:
'  The string to search ends with the target string: True
'
'Using the Swedish (Sweden) - "sv-SE" culture:
'Case sensitive:
'  The string to search ends with the target string: False
'Case insensitive:
'  The string to search ends with the target string: False
'
注解
此方法将 value 参数与此字符串末尾的子字符串进行比较,该字符串的长度与 value相同,并返回一个值,该值指示它们是否相等。 若要相等, value 必须是对此同一实例的引用或与此字符串的末尾匹配。
此方法使用指定的大小写和区域性执行单词 (区分区域性) 比较。
另请参阅
适用于
EndsWith(String, StringComparison)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定使用指定的比较选项进行比较时此字符串实例的结尾是否与指定的字符串匹配。
public:
 bool EndsWith(System::String ^ value, StringComparison comparisonType);public bool EndsWith (string value, StringComparison comparisonType);[System.Runtime.InteropServices.ComVisible(false)]
public bool EndsWith (string value, StringComparison comparisonType);member this.EndsWith : string * StringComparison -> bool[<System.Runtime.InteropServices.ComVisible(false)>]
member this.EndsWith : string * StringComparison -> boolPublic Function EndsWith (value As String, comparisonType As StringComparison) As Boolean参数
- value
- String
要与此实例末尾的子字符串进行比较的字符串。
- comparisonType
- StringComparison
枚举值之一,用于确定如何比较此字符串与 value。
返回
如果 true 参数与此字符串的末尾匹配,则为 value;否则为 false。
- 属性
例外
              value 为 null。
              comparisonType 不是 StringComparison 值。
示例
以下示例确定字符串是否以特定子字符串结尾。 结果受区域性选择、是否忽略大小写以及是否执行序号比较的影响。
// This example demonstrates the 
// System.String.EndsWith(String, StringComparison) method.
using namespace System;
using namespace System::Threading;
void Test(String^ testString, String^ searchString, 
     StringComparison comparison)
{
    String^ resultFormat = "\"{0}\" {1} with \"{2}\".";
    String^ resultString = "does not end";
    if (testString->EndsWith(searchString, comparison))
    {
        resultString = "ends";
    }
    Console::WriteLine(resultFormat, testString, resultString, searchString);
}
int main()
{
    String^ introMessage =
        "Determine whether a string ends with another string, " +
        "using\ndifferent values of StringComparison.";
    array<StringComparison>^ comparisonValues = {
        StringComparison::CurrentCulture,
        StringComparison::CurrentCultureIgnoreCase,
        StringComparison::InvariantCulture,
        StringComparison::InvariantCultureIgnoreCase,
        StringComparison::Ordinal,
        StringComparison::OrdinalIgnoreCase};
    Console::WriteLine(introMessage);
    // Display the current culture because the culture-specific comparisons
    // can produce different results with different cultures.
    Console::WriteLine("The current culture is {0}.\n",
        Thread::CurrentThread->CurrentCulture->Name);
    // Perform two tests for each StringComparison
    for each (StringComparison stringCmp in comparisonValues)
    {
        Console::WriteLine("StringComparison.{0}:", stringCmp);
        Test("abcXYZ", "XYZ", stringCmp);
        Test("abcXYZ", "xyz", stringCmp);
        Console::WriteLine();
    }
}
/*
This code example produces the following results:
Determine whether a string ends with another string, using
different values of StringComparison.
The current culture is en-US.
StringComparison.CurrentCulture:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.CurrentCultureIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
StringComparison.InvariantCulture:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.InvariantCultureIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
StringComparison.Ordinal:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.OrdinalIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
*/
// This example demonstrates the 
// System.String.EndsWith(String, StringComparison) method.
using System;
using System.Threading;
class Sample 
{
    public static void Main() 
    {
        string intro = "Determine whether a string ends with another string, " +
                   "using\n  different values of StringComparison.";
        StringComparison[] scValues = {
            StringComparison.CurrentCulture,
            StringComparison.CurrentCultureIgnoreCase,
            StringComparison.InvariantCulture,
            StringComparison.InvariantCultureIgnoreCase,
            StringComparison.Ordinal,
            StringComparison.OrdinalIgnoreCase };
        Console.WriteLine(intro);
        // Display the current culture because the culture-specific comparisons
        // can produce different results with different cultures.
        Console.WriteLine("The current culture is {0}.\n", 
                       Thread.CurrentThread.CurrentCulture.Name);
        
        // Determine whether three versions of the letter I are equal to each other. 
        foreach (StringComparison sc in scValues)
        {
            Console.WriteLine("StringComparison.{0}:", sc);
            Test("abcXYZ", "XYZ", sc);
            Test("abcXYZ", "xyz", sc);
            Console.WriteLine();
        }
    }
    protected static void Test(string x, string y, StringComparison comparison)
    {
        string resultFmt = "\"{0}\" {1} with \"{2}\".";
        string result = "does not end";
        if (x.EndsWith(y, comparison))
            result = "ends";
        Console.WriteLine(resultFmt, x, result, y);
    }
}
/*
This code example produces the following results:
Determine whether a string ends with another string, using
  different values of StringComparison.
The current culture is en-US.
StringComparison.CurrentCulture:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.CurrentCultureIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
StringComparison.InvariantCulture:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.InvariantCultureIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
StringComparison.Ordinal:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.OrdinalIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
*/
// This example demonstrates the 
// System.String.EndsWith(String, StringComparison) method.
open System
open System.Threading
let test (x: string) y (comparison: StringComparison) =
    let result = 
        if x.EndsWith(y, comparison) then
            "ends"
        else 
            "does not end"
    printfn $"\"{x}\" {result} with \"{y}\"."
let scValues = 
  [|
    StringComparison.CurrentCulture
    StringComparison.CurrentCultureIgnoreCase
    StringComparison.InvariantCulture
    StringComparison.InvariantCultureIgnoreCase
    StringComparison.Ordinal
    StringComparison.OrdinalIgnoreCase
  |]
printfn "Determine whether a string ends with another string, using\n  different values of StringComparison."
// Display the current culture because the culture-specific comparisons
// can produce different results with different cultures.
printfn $"The current culture is {Thread.CurrentThread.CurrentCulture.Name}.\n"
// Determine whether three versions of the letter I are equal to each other. 
for sc in scValues do
    printfn $"StringComparison.{sc}:"
    test "abcXYZ" "XYZ" sc
    test "abcXYZ" "xyz" sc
    printfn ""
(*
This code example produces the following results:
Determine whether a string ends with another string, using
  different values of StringComparison.
The current culture is en-US.
StringComparison.CurrentCulture:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.CurrentCultureIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
StringComparison.InvariantCulture:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.InvariantCultureIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
StringComparison.Ordinal:
"abcXYZ" ends with "XYZ".
"abcXYZ" does not end with "xyz".
StringComparison.OrdinalIgnoreCase:
"abcXYZ" ends with "XYZ".
"abcXYZ" ends with "xyz".
*)
' This example demonstrates the 
' System.String.EndsWith(String, StringComparison) method.
Imports System.Threading
Class Sample
    Public Shared Sub Main() 
        Dim intro As String = "Determine whether a string ends with another string, " & _
                              "using" & vbCrLf & "  different values of StringComparison."
        
        Dim scValues As StringComparison() =  { _
                        StringComparison.CurrentCulture, _
                        StringComparison.CurrentCultureIgnoreCase, _
                        StringComparison.InvariantCulture, _
                        StringComparison.InvariantCultureIgnoreCase, _
                        StringComparison.Ordinal, _
                        StringComparison.OrdinalIgnoreCase }
        Console.WriteLine(intro)
        
        ' Display the current culture because the culture-specific comparisons
        ' can produce different results with different cultures.
        Console.WriteLine("The current culture is {0}." & vbCrLf, _
                           Thread.CurrentThread.CurrentCulture.Name)
        ' Determine whether three versions of the letter I are equal to each other. 
        Dim sc As StringComparison
        For Each sc In  scValues
            Console.WriteLine("StringComparison.{0}:", sc)
            Test("abcXYZ", "XYZ", sc)
            Test("abcXYZ", "xyz", sc)
            Console.WriteLine()
        Next sc
    
    End Sub
    
    
    Protected Shared Sub Test(ByVal x As String, ByVal y As String, _
                              ByVal comparison As StringComparison) 
        Dim resultFmt As String = """{0}"" {1} with ""{2}""."
        Dim result As String = "does not end"
        '
        If x.EndsWith(y, comparison) Then
            result = "ends"
        End If
        Console.WriteLine(resultFmt, x, result, y)
    
    End Sub
End Class
'
'This code example produces the following results:
'
'Determine whether a string ends with another string, using
'  different values of StringComparison.
'The current culture is en-US.
'
'StringComparison.CurrentCulture:
'"abcXYZ" ends with "XYZ".
'"abcXYZ" does not end with "xyz".
'
'StringComparison.CurrentCultureIgnoreCase:
'"abcXYZ" ends with "XYZ".
'"abcXYZ" ends with "xyz".
'
'StringComparison.InvariantCulture:
'"abcXYZ" ends with "XYZ".
'"abcXYZ" does not end with "xyz".
'
'StringComparison.InvariantCultureIgnoreCase:
'"abcXYZ" ends with "XYZ".
'"abcXYZ" ends with "xyz".
'
'StringComparison.Ordinal:
'"abcXYZ" ends with "XYZ".
'"abcXYZ" does not end with "xyz".
'
'StringComparison.OrdinalIgnoreCase:
'"abcXYZ" ends with "XYZ".
'"abcXYZ" ends with "xyz".
'
注解
方法 EndsWith 将 value 参数与此字符串末尾的子字符串进行比较,并返回一个值,该值指示它们是否相等。 要相等, value 必须是对此同一字符串的引用,必须是空字符串 (“”) ,或者必须与此字符串的末尾匹配。 方法执行的 EndsWith 比较类型取决于 参数的值 comparisonType 。
另请参阅
适用于
EndsWith(Char)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定此字符串实例的结尾是否与指定的字符匹配。
public:
 bool EndsWith(char value);public bool EndsWith (char value);member this.EndsWith : char -> boolPublic Function EndsWith (value As Char) As Boolean参数
- value
- Char
要与此实例末尾的字符进行比较的字符。
返回
如果 true 与此实例的末尾匹配,则为 value;否则为 false。
注解
此方法执行区分大小写和不区分区域性的序号 () 比较。
适用于
EndsWith(String)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定此字符串实例的结尾是否与指定的字符串匹配。
public:
 bool EndsWith(System::String ^ value);public bool EndsWith (string value);member this.EndsWith : string -> boolPublic Function EndsWith (value As String) As Boolean参数
- value
- String
要与此实例末尾的子字符串进行比较的字符串。
返回
如果 true 与此实例的末尾匹配,则为 value;否则为 false。
例外
              value 为 null。
示例
以下示例指示数组中的每个字符串是否以句点 (“结尾。) 。
using System;
public class Example
{
   public static void Main()
   {
      String[] strings = { "This is a string.", "Hello!", "Nothing.", 
                           "Yes.", "randomize" };
      foreach (var value in strings) {
         bool endsInPeriod = value.EndsWith(".");
         Console.WriteLine("'{0}' ends in a period: {1}", 
                           value, endsInPeriod);
      }                            
   }
}
// The example displays the following output:
//       'This is a string.' ends in a period: True
//       'Hello!' ends in a period: False
//       'Nothing.' ends in a period: True
//       'Yes.' ends in a period: True
//       'randomize' ends in a period: False
let strings = 
    [| "This is a string."; "Hello!"; "Nothing."
       "Yes."; "randomize" |]
for value in strings do
    let endsInPeriod = value.EndsWith "."
    printfn $"'{value}' ends in a period: {endsInPeriod}"
// The example displays the following output:
//       'This is a string.' ends in a period: True
//       'Hello!' ends in a period: False
//       'Nothing.' ends in a period: True
//       'Yes.' ends in a period: True
//       'randomize' ends in a period: False
Module Example
   Public Sub Main()
      Dim strings() As String = { "This is a string.", "Hello!", 
                                  "Nothing.", "Yes.", "randomize" }
      For Each value In strings
         Dim endsInPeriod As Boolean = value.EndsWith(".")
         Console.WriteLine("'{0}' ends in a period: {1}", 
                           value, endsInPeriod)
      Next                            
   End Sub
End Module
' The example displays the following output:
'       'This is a string.' ends in a period: True
'       'Hello!' ends in a period: False
'       'Nothing.' ends in a period: True
'       'Yes.' ends in a period: True
'       'randomize' ends in a period: False
以下示例定义一个 StripEndTags 方法,该方法使用 EndsWith(String) 方法从行尾删除 HTML 结束标记。 请注意, StripEndTags 以递归方式调用 方法,以确保删除行尾的多个 HTML 结束标记。
using namespace System;
using namespace System::Collections;
String^ StripEndTags( String^ item )
{
   bool found = false;
   
   // try to find a tag at the end of the line using EndsWith
   if ( item->Trim()->EndsWith( ">" ) )
   {
      
      // now search for the opening tag...
      int lastLocation = item->LastIndexOf( "</" );
      
      // remove the identified section, if it is a valid region
      if ( lastLocation >= 0 ) {
            item = item->Substring( 0, lastLocation );
            found = true;
      }
   }
   if (found) item = StripEndTags(item);
   
   return item;
}
int main()
{
   
   // process an input file that contains html tags.
   // this sample checks for multiple tags at the end of the line, rather than simply
   // removing the last one.
   // note: HTML markup tags always end in a greater than symbol (>).
   array<String^>^strSource = {"<b>This is bold text</b>","<H1>This is large Text</H1>","<b><i><font color=green>This has multiple tags</font></i></b>","<b>This has <i>embedded</i> tags.</b>","This line simply ends with a greater than symbol, it should not be modified>"};
   Console::WriteLine( "The following lists the items before the ends have been stripped:" );
   Console::WriteLine( "-----------------------------------------------------------------" );
   
   // print out the initial array of strings
   IEnumerator^ myEnum1 = strSource->GetEnumerator();
   while ( myEnum1->MoveNext() )
   {
      String^ s = safe_cast<String^>(myEnum1->Current);
      Console::WriteLine( s );
   }
   Console::WriteLine();
   Console::WriteLine( "The following lists the items after the ends have been stripped:" );
   Console::WriteLine( "----------------------------------------------------------------" );
   
   // Display the array of strings.
   IEnumerator^ myEnum2 = strSource->GetEnumerator();
   while ( myEnum2->MoveNext() )
   {
      String^ s = safe_cast<String^>(myEnum2->Current);
      Console::WriteLine( StripEndTags( s ) );
   }
}
// The example displays the following output:
//    The following lists the items before the ends have been stripped:
//    -----------------------------------------------------------------
//    <b>This is bold text</b>
//    <H1>This is large Text</H1>
//    <b><i><font color=green>This has multiple tags</font></i></b>
//    <b>This has <i>embedded</i> tags.</b>
//    This line simply ends with a greater than symbol, it should not be modified>
//    
//    The following lists the items after the ends have been stripped:
//    ----------------------------------------------------------------
//    <b>This is bold text
//    <H1>This is large Text
//    <b><i><font color=green>This has multiple tags
//    <b>This has <i>embedded</i> tags.
//    This line simply ends with a greater than symbol, it should not be modified>
using System;
public class EndsWithTest {
    public static void Main() {
        // process an input file that contains html tags.
        // this sample checks for multiple tags at the end of the line, rather than simply
        // removing the last one.
        // note: HTML markup tags always end in a greater than symbol (>).
        string [] strSource = { "<b>This is bold text</b>", "<H1>This is large Text</H1>",
                "<b><i><font color=green>This has multiple tags</font></i></b>",
                "<b>This has <i>embedded</i> tags.</b>",
                "This line simply ends with a greater than symbol, it should not be modified>" };
        Console.WriteLine("The following lists the items before the ends have been stripped:");
        Console.WriteLine("-----------------------------------------------------------------");
        // print out the initial array of strings
        foreach ( string s in strSource )
            Console.WriteLine( s );
        Console.WriteLine();
        Console.WriteLine("The following lists the items after the ends have been stripped:");
        Console.WriteLine("----------------------------------------------------------------");
        // print out the array of strings
        foreach (var s in strSource)
            Console.WriteLine(StripEndTags(s));
    }
    private static string StripEndTags( string item ) {
        bool found = false;
        // try to find a tag at the end of the line using EndsWith
        if (item.Trim().EndsWith(">")) {
            // now search for the opening tag...
            int lastLocation = item.LastIndexOf( "</" );
            // remove the identified section, if it is a valid region
            if ( lastLocation >= 0 ) {
                found = true;
                item =  item.Substring( 0, lastLocation );
            }
        }
        if (found)
           item = StripEndTags(item);
        return item;
    }
}
// The example displays the following output:
//    The following lists the items before the ends have been stripped:
//    -----------------------------------------------------------------
//    <b>This is bold text</b>
//    <H1>This is large Text</H1>
//    <b><i><font color=green>This has multiple tags</font></i></b>
//    <b>This has <i>embedded</i> tags.</b>
//    This line simply ends with a greater than symbol, it should not be modified>
//
//    The following lists the items after the ends have been stripped:
//    ----------------------------------------------------------------
//    <b>This is bold text
//    <H1>This is large Text
//    <b><i><font color=green>This has multiple tags
//    <b>This has <i>embedded</i> tags.
//    This line simply ends with a greater than symbol, it should not be modified>
let rec stripEndTags item =
    let mutable item: string = item
    let mutable found = false
    // try to find a tag at the end of the line using EndsWith
    if item.Trim().EndsWith ">" then
        // now search for the opening tag...
        let lastLocation = item.LastIndexOf "</"
        // remove the identified section, if it is a valid region
        if lastLocation >= 0 then
            found <- true
            item <- item.Substring(0, lastLocation)
    if found then
        stripEndTags item
    else 
        item
// process an input file that contains html tags.
// this sample checks for multiple tags at the end of the line, rather than simply
// removing the last one.
// note: HTML markup tags always end in a greater than symbol (>).
let strSource = 
    [| "<b>This is bold text</b>"; "<H1>This is large Text</H1>"
       "<b><i><font color=green>This has multiple tags</font></i></b>"
       "<b>This has <i>embedded</i> tags.</b>"
       "This line simply ends with a greater than symbol, it should not be modified>" |]
printfn "The following lists the items before the ends have been stripped:"
printfn "-----------------------------------------------------------------"
// print out the initial array of strings
for s in strSource do
    printfn $"{s}"
printfn "\nThe following lists the items after the ends have been stripped:"
printfn "----------------------------------------------------------------"
// print out the array of strings
for s in strSource do
    printfn $"{stripEndTags s}"
// The example displays the following output:
//    The following lists the items before the ends have been stripped:
//    -----------------------------------------------------------------
//    <b>This is bold text</b>
//    <H1>This is large Text</H1>
//    <b><i><font color=green>This has multiple tags</font></i></b>
//    <b>This has <i>embedded</i> tags.</b>
//    This line simply ends with a greater than symbol, it should not be modified>
//
//    The following lists the items after the ends have been stripped:
//    ----------------------------------------------------------------
//    <b>This is bold text
//    <H1>This is large Text
//    <b><i><font color=green>This has multiple tags
//    <b>This has <i>embedded</i> tags.
//    This line simply ends with a greater than symbol, it should not be modified>
Public Module Example
    Public Sub Main()
        Dim strSource() As String = { "<b>This is bold text</b>", 
                    "<H1>This is large Text</H1>", 
                    "<b><i><font color = green>This has multiple tags</font></i></b>", 
                    "<b>This has <i>embedded</i> tags.</b>", 
                    "This line simply ends with a greater than symbol, it should not be modified>" }
        Console.WriteLine("The following lists the items before the ends have been stripped:")
        Console.WriteLine("-----------------------------------------------------------------")
        ' Display the initial array of strings.
        For Each s As String In  strSource
            Console.WriteLine(s)
        Next
        Console.WriteLine()
        Console.WriteLine("The following lists the items after the ends have been stripped:")
        Console.WriteLine("----------------------------------------------------------------")
        ' Display the array of strings.
        For Each s As String In strSource
            Console.WriteLine(StripEndTags(s))
        Next 
    End Sub 
    Private Function StripEndTags(item As String) As String
        Dim found As Boolean = False
        
        ' Try to find a tag at the end of the line using EndsWith.
        If item.Trim().EndsWith(">") Then
            ' now search for the opening tag...
            Dim lastLocation As Integer = item.LastIndexOf("</")
            If lastLocation >= 0 Then
                found = True
                
                ' Remove the identified section, if it is a valid region.
                item = item.Substring(0, lastLocation)
            End If
        End If
        
        If found Then item = StripEndTags(item)
        Return item
    End Function 
End Module
' The example displays the following output:
'    The following lists the items before the ends have been stripped:
'    -----------------------------------------------------------------
'    <b>This is bold text</b>
'    <H1>This is large Text</H1>
'    <b><i><font color = green>This has multiple tags</font></i></b>
'    <b>This has <i>embedded</i> tags.</b>
'    This line simply ends with a greater than symbol, it should not be modified>
'    
'    The following lists the items after the ends have been stripped:
'    ----------------------------------------------------------------
'    <b>This is bold text
'    <H1>This is large Text
'    <b><i><font color = green>This has multiple tags
'    <b>This has <i>embedded</i> tags.
'    This line simply ends with a greater than symbol, it should not be modified>
注解
此方法将此实例末尾的子字符串进行比较 value ,该子字符串长度与 value相同,并返回它们是否相等的指示。 若要相等, value 必须是对此同一实例的引用或与此实例的末尾匹配。
此方法使用当前区域性执行单词 (区分大小写和区分区域性) 比较。
调用方说明
如 使用字符串的最佳做法中所述,建议避免调用替换默认值的字符串比较方法,而是调用需要显式指定参数的方法。 若要使用当前区域性的字符串比较规则确定字符串是否以特定子字符串结尾,请通过调用 EndsWith(String, StringComparison) 其参数值为 CurrentCulturecomparisonType 的方法重载来显式发出信号。 如果不需要语言感知比较,请考虑使用 Ordinal。