String.Substring 메서드

정의

이 인스턴스에서 부분 문자열을 검색합니다.

이 멤버는 오버로드됩니다. 구문, 사용법 및 예제를 비롯하여 이 멤버에 대한 자세한 내용을 보려면 오버로드 목록에서 이름을 클릭합니다.

오버로드

Substring(Int32)

이 인스턴스에서 부분 문자열을 검색합니다. 부분 문자열은 지정된 문자 위치에서 시작하고 문자열 끝까지 계속됩니다.

Substring(Int32, Int32)

이 인스턴스에서 부분 문자열을 검색합니다. 부분 문자열은 지정된 문자 위치에서 시작하고 길이도 지정되어 있습니다.

Substring(Int32)

이 인스턴스에서 부분 문자열을 검색합니다. 부분 문자열은 지정된 문자 위치에서 시작하고 문자열 끝까지 계속됩니다.

public:
 System::String ^ Substring(int startIndex);
public string Substring (int startIndex);
member this.Substring : int -> string
Public Function Substring (startIndex As Integer) As String

매개 변수

startIndex
Int32

이 인스턴스의 substring에 있는 0부터 시작하는 문자 위치입니다.

반환

String

이 인스턴스의 startIndex에서 시작하는 부분 문자열에 해당하는 문자열이거나, Empty가 이 인스턴스의 길이와 같으면 startIndex입니다.

예외

startIndex가 0보다 작거나 이 인스턴스 길이보다 큽니다.

예제

다음 예제에서는 문자열에서 부분 문자열을 가져오는 방법을 보여 줍니다.

using namespace System;
using namespace System::Collections;

int main()
{
   array<String^>^info = { "Name: Felica Walker", "Title: Mz.",
                           "Age: 47", "Location: Paris", "Gender: F"};
   int found = 0;
   Console::WriteLine("The initial values in the array are:");
   for each (String^ s in info) 
      Console::WriteLine(s);

   Console::WriteLine("\nWe want to retrieve only the key information. That is:");
   for each (String^ s in info) { 
      found = s->IndexOf(": ");
      Console::WriteLine("   {0}", s->Substring(found + 2));
   }
}
// The example displays the following output:
//       The initial values in the array are:
//       Name: Felica Walker
//       Title: Mz.
//       Age: 47
//       Location: Paris
//       Gender: F
//       
//       We want to retrieve only the key information. That is:
//       Felica Walker
//       Mz.
//       47
//       Paris
//       F
string [] info = { "Name: Felica Walker", "Title: Mz.", 
                   "Age: 47", "Location: Paris", "Gender: F"};
int found = 0;

Console.WriteLine("The initial values in the array are:");
foreach (string s in info)
    Console.WriteLine(s);

Console.WriteLine("\nWe want to retrieve only the key information. That is:");        
foreach (string s in info) 
{
    found = s.IndexOf(": ");
    Console.WriteLine("   {0}", s.Substring(found + 2));
}

// The example displays the following output:
//       The initial values in the array are:
//       Name: Felica Walker
//       Title: Mz.
//       Age: 47
//       Location: Paris
//       Gender: F
//       
//       We want to retrieve only the key information. That is:
//          Felica Walker
//          Mz.
//          47
//          Paris
//          F
Public Class SubStringTest
    Public Shared Sub Main()
        Dim info As String() = { "Name: Felica Walker", "Title: Mz.", 
                                 "Age: 47", "Location: Paris", "Gender: F"}
        Dim found As Integer = 0
       
        Console.WriteLine("The initial values in the array are:")
        For Each s As String In info
            Console.WriteLine(s)
        Next s

        Console.WriteLine(vbCrLf + "We want to retrieve only the key information. That is:")
        For Each s As String In info
            found = s.IndexOf(": ")
            Console.WriteLine("   {0}", s.Substring(found + 2))
        Next s
    End Sub 
End Class 
' The example displays the following output:
'       The initial values in the array are:
'       Name: Felica Walker
'       Title: Mz.
'       Age: 47
'       Location: Paris
'       Gender: F
'       
'       We want to retrieve only the key information. That is:
'          Felica Walker
'          Mz.
'          47
'          Paris
'          F

다음 예제에서는 메서드를 사용 하 여 Substring 등호 ("=") 문자로 구분 되는 키/값 쌍을 구분 합니다.

String[] pairs = { "Color1=red", "Color2=green", "Color3=blue",
                 "Title=Code Repository" };
foreach (var pair in pairs) 
{
    int position = pair.IndexOf("=");
    if (position < 0)
        continue;
    Console.WriteLine("Key: {0}, Value: '{1}'", 
                   pair.Substring(0, position),
                   pair.Substring(position + 1));
}                          

// The example displays the following output:
//     Key: Color1, Value: 'red'
//     Key: Color2, Value: 'green'
//     Key: Color3, Value: 'blue'
//     Key: Title, Value: 'Code Repository'
Module Example
   Public Sub Main()
      Dim pairs() As String = { "Color1=red", "Color2=green", "Color3=blue",
                                "Title=Code Repository" }
      For Each pair In pairs
         Dim position As Integer = pair.IndexOf("=")
         If position < 0 then Continue For
         Console.WriteLine("Key: {0}, Value: '{1}'", 
                           pair.Substring(0, position),
                           pair.Substring(position + 1))
      Next                          
   End Sub
End Module
' The example displays the following output:
'     Key: Color1, Value: 'red'
'     Key: Color2, Value: 'green'
'     Key: Color3, Value: 'blue'
'     Key: Title, Value: 'Code Repository'

IndexOf메서드는 문자열에서 equals 문자의 위치를 가져오는 데 사용 됩니다. 메서드를 호출 하면 Substring(Int32, Int32) 문자열의 첫 번째 문자부터 시작 하 여 메서드 호출에서 반환 되는 문자 수를 연장 하는 키 이름이 추출 됩니다 IndexOf . Substring(Int32)그런 다음 메서드를 호출 하면 키에 할당 된 값이 추출 됩니다. 이 문자는 같은 문자 위치에서 시작 하 여 문자열의 끝 부분으로 확장 됩니다.

설명

메서드를 호출 하 여 Substring(Int32) 지정 된 문자 위치에서 시작 하 여 문자열의 끝에서 끝나는 문자열에서 부분 문자열을 추출 합니다. 시작 문자 위치는 0부터 시작 합니다. 즉, 문자열의 첫 번째 문자는 인덱스 1이 아닌 인덱스 0에 있습니다. 지정 된 문자 위치에서 시작 하 여 문자열의 끝에서 끝나는 부분 문자열을 추출 하려면 메서드를 호출 Substring(Int32, Int32) 합니다.

참고

이 메서드는 현재 인스턴스의 값을 수정 하지 않습니다. 대신 현재 문자열의 위치에서 시작 하는 새 문자열을 반환 startIndex 합니다.

특정 문자 또는 문자 시퀀스로 시작 하는 부분 문자열을 추출 하려면 또는와 같은 메서드를 호출 IndexOf IndexOf 하 여의 값을 가져옵니다 startIndex . 두 번째 예제에서는이를 보여 줍니다. "=" 문자 다음에 문자 위치 하나를 시작 하는 키 값을 추출 합니다.

startIndex가 0과 같으면 메서드는 원래 문자열을 변경 하지 않고 반환 합니다.

추가 정보

적용 대상

Substring(Int32, Int32)

이 인스턴스에서 부분 문자열을 검색합니다. 부분 문자열은 지정된 문자 위치에서 시작하고 길이도 지정되어 있습니다.

public:
 System::String ^ Substring(int startIndex, int length);
public string Substring (int startIndex, int length);
member this.Substring : int * int -> string
Public Function Substring (startIndex As Integer, length As Integer) As String

매개 변수

startIndex
Int32

이 인스턴스의 substring에 있는 0부터 시작하는 문자 위치입니다.

length
Int32

부분 문자열에 있는 문자의 수입니다.

반환

String

이 인스턴스의 length에서 시작하는 startIndex 길이의 부분 문자열에 해당하는 문자열이거나, Empty가 이 인스턴스의 길이와 같고 startIndex가 0이면 length입니다.

예외

startIndex + length는 문자 위치가 이 인스턴스 안에 없음을 나타냅니다.

또는

startIndex 또는 length가 0보다 작습니다.

예제

다음 예제에서는 Substring(Int32, Int32) 여섯 번째 문자 위치에서 시작 하 여 (인덱스 5에서) 문자열에서 두 문자를 추출 하는 메서드를 간단 하 게 호출 하는 방법을 보여 줍니다.

String value = "This is a string.";
int startIndex = 5;
int length = 2;
String substring = value.Substring(startIndex, length);
Console.WriteLine(substring);

// The example displays the following output:
//       is
Module Example
   Public Sub Main()
      Dim value As String = "This is a string."
      Dim startIndex As Integer = 5
      Dim length As Integer = 2
      Dim substring As String = value.Substring(startIndex, length)
      Console.WriteLine(substring)
   End Sub
End Module
' The example displays the following output:
'       is

다음 예제에서는 Substring(Int32, Int32) 다음 세 가지 경우의 메서드를 사용 하 여 문자열 내에서 부분 문자열을 분리 합니다. 두 경우 모두 비교에 부분 문자열이 사용 되며 세 번째 경우에는 잘못 된 매개 변수를 지정 했기 때문에 예외가 throw 됩니다.

  • 인덱스 2에서 단일 문자와 세 번째 위치를 추출 하 여 "c"와 비교 합니다. 이 비교는 true 을 반환 합니다.

  • 문자열의 네 번째 위치 (인덱스 3)에서 시작 하 고이를 메서드에 전달 하는 문자를 추출 IsNullOrEmpty 합니다. 이는 메서드를 호출 하면가 반환 되기 때문에 true를 반환 합니다 Substring String.Empty .

  • 문자열의 네 번째 위치에서 시작 하는 문자 하나를 추출 하려고 합니다. 해당 위치에 문자가 없으므로 메서드 호출에서 예외가 throw 됩니다 ArgumentOutOfRangeException .

string myString = "abc";
bool test1 = myString.Substring(2, 1).Equals("c"); // This is true.
Console.WriteLine(test1);
bool test2 = string.IsNullOrEmpty(myString.Substring(3, 0)); // This is true.
Console.WriteLine(test2);
try
{
   string str3 = myString.Substring(3, 1); // This throws ArgumentOutOfRangeException.
   Console.WriteLine(str3);
}
catch (ArgumentOutOfRangeException e)
{
   Console.WriteLine(e.Message);
}

// The example displays the following output:
//       True
//       True
//       Index and length must refer to a location within the string.
//       Parameter name: length
Public Class Sample
   Public Shared Sub Main()
      Dim myString As String = "abc"
      Dim test1 As Boolean = myString.Substring(2, 1).Equals("c") ' This is true.
      Console.WriteLine(test1)
      Dim test2 As Boolean = String.IsNullOrEmpty(myString.Substring(3, 0)) ' This is true.
      Console.WriteLine(test2)
      Try  
         Dim str3 As String = myString.Substring(3, 1) ' This throws ArgumentOutOfRangeException.
         Console.WriteLine(str3)
      Catch e As ArgumentOutOfRangeException
         Console.WriteLIne(e.Message)
      End Try   
   End Sub
End Class 
' The example displays the following output:
'       True
'       True
'       Index and length must refer to a location within the string.
'       Parameter name: length

다음 예제에서는 메서드를 사용 하 여 Substring 등호 ("=") 문자로 구분 되는 키/값 쌍을 구분 합니다.

String[] pairs = { "Color1=red", "Color2=green", "Color3=blue",
                 "Title=Code Repository" };
foreach (var pair in pairs) 
{
    int position = pair.IndexOf("=");
    if (position < 0)
        continue;
    Console.WriteLine("Key: {0}, Value: '{1}'", 
                   pair.Substring(0, position),
                   pair.Substring(position + 1));
}                          

// The example displays the following output:
//     Key: Color1, Value: 'red'
//     Key: Color2, Value: 'green'
//     Key: Color3, Value: 'blue'
//     Key: Title, Value: 'Code Repository'
Module Example
   Public Sub Main()
      Dim pairs() As String = { "Color1=red", "Color2=green", "Color3=blue",
                                "Title=Code Repository" }
      For Each pair In pairs
         Dim position As Integer = pair.IndexOf("=")
         If position < 0 then Continue For
         Console.WriteLine("Key: {0}, Value: '{1}'", 
                           pair.Substring(0, position),
                           pair.Substring(position + 1))
      Next                          
   End Sub
End Module
' The example displays the following output:
'     Key: Color1, Value: 'red'
'     Key: Color2, Value: 'green'
'     Key: Color3, Value: 'blue'
'     Key: Title, Value: 'Code Repository'

IndexOf메서드는 문자열에서 equals 문자의 위치를 가져오는 데 사용 됩니다. 메서드를 호출 하면 Substring(Int32, Int32) 문자열의 첫 번째 문자부터 시작 하 여 메서드 호출에서 반환 되는 문자 수를 연장 하는 키 이름이 추출 됩니다 IndexOf . Substring(Int32)그런 다음 메서드를 호출 하면 키에 할당 된 값이 추출 됩니다. 이 문자는 같은 문자 위치에서 시작 하 여 문자열의 끝 부분으로 확장 됩니다.

설명

메서드를 호출 하 여 Substring(Int32, Int32) 지정 된 문자 위치에서 시작 하 고 문자열 끝 이전에 끝나는 문자열에서 부분 문자열을 추출 합니다. 시작 문자 위치는 0부터 시작 합니다. 즉, 문자열의 첫 번째 문자는 인덱스 1이 아닌 인덱스 0에 있습니다. 지정 된 문자 위치에서 시작 하 여 문자열의 끝까지 계속 되는 부분 문자열을 추출 하려면 메서드를 호출 Substring(Int32) 합니다.

참고

이 메서드는 현재 인스턴스의 값을 수정 하지 않습니다. 대신 length 현재 문자열의 위치에서 시작 하는 문자를 포함 하는 새 문자열을 반환 startIndex 합니다.

length매개 변수는 현재 문자열 인스턴스에서 추출할 문자의 총 수를 나타냅니다. 여기에는 인덱스에 있는 시작 문자가 포함 됩니다 startIndex . 즉, Substring 메서드는 인덱스에서 startIndex 인덱스-1로 문자를 추출 하려고 startIndex + length 합니다.

특정 문자 또는 문자 시퀀스로 시작 하는 부분 문자열을 추출 하려면 또는와 같은 메서드를 호출 IndexOf LastIndexOf 하 여의 값을 가져옵니다 startIndex .

부분 문자열이에서 startIndex 지정 된 문자 시퀀스로 확장 될 경우 또는와 같은 메서드를 호출 하 여 IndexOf LastIndexOf 끝 문자 또는 문자 시퀀스의 인덱스를 가져올 수 있습니다. 그러면 다음과 같이 해당 값을 문자열의 인덱스 위치로 변환할 수 있습니다.

  • 하위 문자열의 끝을 표시 하는 단일 문자를 검색 한 경우 length 매개 변수는 + 1과 같습니다 endIndex - startIndex endIndex . 여기서는 또는 메서드의 반환 값입니다 IndexOf IndexOf . 다음 예에서는 문자열에서 "b" 문자의 연속 블록을 추출 합니다.

    String s = "aaaaabbbcccccccdd";
    Char charRange = 'b';
    int startIndex = s.IndexOf(charRange);
    int endIndex = s.LastIndexOf(charRange);
    int length = endIndex - startIndex + 1;
    Console.WriteLine("{0}.Substring({1}, {2}) = {3}",
                    s, startIndex, length, 
                    s.Substring(startIndex, length));
    
    // The example displays the following output:
    //       aaaaabbbcccccccdd.Substring(5, 3) = bbb
    
    Module Example
       Public Sub Main()
          Dim s As String = "aaaaabbbcccccccdd"
          Dim charRange As Char = "b"c
          Dim startIndex As Integer = s.Indexof(charRange)
          Dim endIndex As Integer = s.LastIndexOf(charRange)
          Dim length = endIndex - startIndex + 1
          Console.WriteLine("{0}.Substring({1}, {2}) = {3}",
                            s, startIndex, length, 
                            s.Substring(startIndex, length))
       End Sub
    End Module
    ' The example displays the following output:
    '     aaaaabbbcccccccdd.Substring(5, 3) = bbb
    
  • 하위 문자열의 끝을 표시 하는 여러 문자를 검색 한 경우 매개 변수는와 length 동일 합니다 endIndex + endMatchLength - startIndex . 여기서 endIndex 은 또는 메서드의 반환 값이 IndexOf IndexOf 고, endMatchLength 은 부분 문자열의 끝을 표시 하는 문자 시퀀스의 길이입니다. 다음 예제에서는 XML 요소를 포함 하는 텍스트 블록을 추출 합니다 <definition> .

    String s = "<term>extant<definition>still in existence</definition></term>";
    String searchString = "<definition>";
    int startIndex = s.IndexOf(searchString);
    searchString = "</" + searchString.Substring(1);
    int endIndex = s.IndexOf(searchString);
    String substring = s.Substring(startIndex, endIndex + searchString.Length - startIndex);
    Console.WriteLine("Original string: {0}", s);
    Console.WriteLine("Substring;       {0}", substring); 
    
    // The example displays the following output:
    //     Original string: <term>extant<definition>still in existence</definition></term>
    //     Substring;       <definition>still in existence</definition>
    
    Module Example
       Public Sub Main()
          Dim s As String = "<term>extant<definition>still in existence</definition></term>"
          Dim searchString As String = "<definition>"
          Dim startindex As Integer = s.IndexOf(searchString)
          searchString = "</" + searchString.Substring(1)
          Dim endIndex As Integer = s.IndexOf(searchString)
          Dim substring As String = s.Substring(startIndex, endIndex + searchString.Length - StartIndex)
          Console.WriteLine("Original string: {0}", s)
          Console.WriteLine("Substring;       {0}", substring) 
       End Sub
    End Module
    ' The example displays the following output:
    '   Original string: <term>extant<definition>still in existence</definition></term>
    '   Substring;       <definition>still in existence</definition>
    
  • 문자 또는 문자 시퀀스가 부분 문자열의 끝에 포함 되지 않은 경우 매개 변수는와 length 동일 합니다 endIndex - startIndex . 여기서 endIndex 은 또는 메서드의 반환 값입니다 IndexOf IndexOf .

startIndex가 0이 고 현재 문자열의 길이와 같으면 메서드는 원래 문자열을 변경 하지 않고 반환 합니다.

추가 정보

적용 대상