C#/문자열

[C#]문자열에서 특정 문자열로 변경하는 방법

DevStory 2022. 8. 16.

문자열에서 특정 문자열로 변경하는 방법

C#에서 문자열 변수에 할당된 문자열은 변경할 수 없습니다.

 

string 타입의 변수에 문자열을 할당하면, 문자열 변수는 Stack에 생성되지만 문자열 값은 Heap에 생성되기 때문입니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "AB_CD_EF_GH";
  }
}

[메모리 공간]

 

따라서, 문자열을 변경하기 위해서는 C#에서 제공하는 다양한 메서드를 사용하여 값이 변경된 새로운 문자열을 생성해야 합니다.

 

이번 포스팅은 C#에서 문자열을 변경할 수 있는 몇 가지 방법을 소개합니다.


방법 1. 특정 문자열 변경 - Replace 메서드

문자열에 포함된 특정 문자열을 모두 변경하고 싶다면, string 클래스의 Replace() 메서드를 사용합니다.

 

Replace() 메서드는 특정 문자열이 변경된 새로운 문자열을 반환합니다.

 

첫 번째 매개변수로 특정 문자열을 전달하고 두 번째 매개변수로 특정 문자열이 다른 값으로 변경되어야 하는 문자열을 전달합니다.

 

다음 예제는 문자열 "Java"를 "C#"으로 변경합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "I Love Java\nJava is Good Programming Language\n";

    string ReplaceResult = strValue.Replace("Java", "C#");

    Console.WriteLine("[strValue]");
    Console.WriteLine(strValue);

    Console.WriteLine("[ReplaceResult]");
    Console.WriteLine(ReplaceResult);
  }
}

[실행 결과]

[strValue]
I Love Java
Java is Good Programming Language

[ReplaceResult]
I Love C#
C# is Good Programming Language

방법 2. 앞에 위치한 특정 문자열을 변경 

문자열에서 특정 문자열이 여러 개 존재하지만, 앞에 위치한 문자열만 변경하고 싶은 경우 다음 방법을 사용합니다.

 

순서 1. indexOf() 메서드로 특정 문자열이 맨 앞에 존재하는지 찾습니다.

순서 2. indexOf() 메서드의 반환 결과가 -1이 아닌 경우 특정 문자열이 존재한다는 뜻이므로 앞에 위치한 특정 문자열을 제거합니다.

순서 3. 특정 위치에 변경하고 싶은 문자열을 추가합니다.

 

다음 예제는 앞에 위치한 문자열 "Java"를 "C#"으로 변경합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "I Love Java\nJava is Good Programming Language\n";
    string findValue = "Java";
    string replaceValue = "C#";
    string ReplaceResult = string.Empty;

    // 1. 특정 문자열의 위치를 찾습니다.
    int findIndex = strValue.IndexOf(findValue);

    // 2. 특정 문자열이 존재하면 특정 문자열을 제거하고 새로운 문자열을 추가합니다.
    if (findIndex != -1)
    {
      ReplaceResult = strValue.Remove(findIndex, findValue.Length)
                              .Insert(findIndex, replaceValue);
    }

    Console.WriteLine("[strValue]");
    Console.WriteLine(strValue);

    Console.WriteLine("[ReplaceResult]");
    Console.WriteLine(ReplaceResult);
  }
}

[실행 결과]

[strValue]
I Love Java
Java is Good Programming Language

[ReplaceResult]
I Love C#
Java is Good Programming Language

방법 3. 뒤에 위치한 특정 문자열을 변경

이번에는 반대로 뒤에 위치한 특정 문자열을 변경하는 방법입니다.

 

방법 2. 앞에 위치한 특정 문자열을 변경하는 방법에서 indexOf() 메서드를 LastIndexOf() 메서드로 변경합니다.

 

다음 예제는 뒤에 위치한 문자열 "Java"를 "C#"으로 변경합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "I Love Java\nJava is Good Programming Language\n";
    string findValue = "Java";
    string replaceValue = "C#";
    string ReplaceResult = string.Empty;

    int findIndex = strValue.LastIndexOf(findValue);

    if (findIndex != -1)
    {
      ReplaceResult = strValue.Remove(findIndex, findValue.Length)
                              .Insert(findIndex, replaceValue);
    }

    Console.WriteLine("[strValue]");
    Console.WriteLine(strValue);

    Console.WriteLine("[ReplaceResult]");
    Console.WriteLine(ReplaceResult);
  }
}

[실행 결과]

[strValue]
I Love Java
Java is Good Programming Language

[ReplaceResult]
I Love Java
C# is Good Programming Language

방법 4. 특정 위치에 문자열 추가 - Insert 메서드

특정 위치에 문자열을 추가해야 하는 경우 Insert() 메서드를 사용할 수 있습니다.

 

Insert() 메서드의 첫 번째 매개변수로 추가하고 싶은 위치를 전달하고 두 번째 매개변수로 추가하고 싶은 문자열을 전달합니다.

 

Insert() 메서드는 특정 위치에 문자열이 추가된 새로운 문자열을 반환합니다.

 

다음 예제는 문자열 0번째 위치에 문자열 "Comment: "를 추가합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "I Love Java\nJava is Good Programming Language\n";
    string ReplaceResult = strValue.Insert(0, "Comment: ");

    Console.WriteLine("[strValue]");
    Console.WriteLine(strValue);

    Console.WriteLine("[ReplaceResult]");
    Console.WriteLine(ReplaceResult);
  }
}

[실행 결과]

[strValue]
I Love Java
Java is Good Programming Language

[ReplaceResult]
Comment: I Love Java
Java is Good Programming Language
반응형

댓글