Skip to main content
.NET Framework Class Library
StringEndsWith Method (String)

Determines whether the end of this string instance matches the specified string.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)
Syntax
Public Function EndsWith ( _
	value As [%$TOPIC/2333wewz_en-us_VS_110_1_0_0_0_0%] _
) As [%$TOPIC/2333wewz_en-us_VS_110_1_0_0_0_1%]
public [%$TOPIC/2333wewz_en-us_VS_110_1_0_1_0_0%] EndsWith(
	[%$TOPIC/2333wewz_en-us_VS_110_1_0_1_0_1%] value
)
public:
[%$TOPIC/2333wewz_en-us_VS_110_1_0_2_0_0%] EndsWith(
	[%$TOPIC/2333wewz_en-us_VS_110_1_0_2_0_1%]^ value
)
member EndsWith : 
        value:[%$TOPIC/2333wewz_en-us_VS_110_1_0_3_0_0%] -> [%$TOPIC/2333wewz_en-us_VS_110_1_0_3_0_1%]
public function EndsWith(
	value : [%$TOPIC/2333wewz_en-us_VS_110_1_0_4_0_0%]
) : [%$TOPIC/2333wewz_en-us_VS_110_1_0_4_0_1%]

Parameters

value
Type: SystemString

The string to compare to the substring at the end of this instance.

Return Value

Type: SystemBoolean
true if value matches the end of this instance; otherwise, false.
Exceptions
ExceptionCondition
ArgumentNullException

value is .

Remarks

This method compares value to the substring at the end of this instance that is the same length as value, and returns an indication whether they are equal. To be equal, value must be a reference to this same instance or match the end of this instance.

This method performs a word (case-sensitive and culture-sensitive) comparison using the current culture.

Notes to Callers

As explained in Best Practices for Using Strings in the .NET Framework, we recommend that you avoid calling string comparison methods that substitute default values and instead call methods that require parameters to be explicitly specified. To determine whether a string ends with a particular substring by using the string comparison rules of the current culture, call the EndsWith(String, StringComparison) method overload with a value of StringComparisonCurrentCulture for its comparisonType parameter.

Examples

The following example defines a StripEndTags method that uses the EndsWith(String) method to remove HTML end tags from the end of a line. Note that the StripEndTags method is called recursively to ensure that multiple HTML end tags at the end of the line are removed.

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>
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>
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>
Version Information

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8