Development Tip

C # .NET에서 문자열의 문자를 빈 문자로 바꾸는 방법

yourdevel 2020. 10. 31. 10:15
반응형

C # .NET에서 문자열의 문자를 빈 문자로 바꾸는 방법


다음과 같은 문자열이 있습니다.

string val = "123-12-1234";

C #에서 빈 문자열을 사용하여 대시를 어떻게 바꿀 수 있습니까?

내말은 val.Replace(char oldChar, newChar);

들어가야 할 것 oldCharnewChar.


다른 오버로드를 사용할 수 있습니다 Replace().

val = val.Replace("-", string.Empty)

여기에있는 다른 답변은 정확하더라도 초기 의심을 명시 적으로 해결하지 않기 때문에 그렇게 할 것입니다.

호출 string.Replace(char oldChar, char newChar)하면 문자의 발생을 다른 문자로 대체합니다. 일대일 교체입니다. 이 때문에 결과 문자열의 길이는 동일합니다.

원하는 것은 대시 제거 하는 것입니다. 분명히 다른 문자로 바꾸는 것과는 다릅니다. 1 문자는 항상 1 문자이므로 "문자 없음"으로 바꿀 수 없습니다. 그렇기 때문에 문자열을 사용하는 오버로드를 사용해야합니다. 문자열은 길이가 다를 수 있습니다. 길이가 1 인 문자열을 길이가 0 인 문자열로 바꾸면 대시가 사라지고 "nothing"으로 바뀝니다.


이것은 너무 간단 해 보이지만 :

val.Replace("-","");

val.Replace("-", "");

MSDN 소스


string val = "123-12-1234";

val = val.Replace("-", ""); // result: 123121234

문자열의 문자를 빈 문자로 바꾸려면 문자열에서 해당 문자를 제거하려는 경우 R. Martinho Fernandes의 답변을 읽으십시오.

다음은 문자열에서 문자를 제거하는 방법의 예입니다 ( "빈 문자"로 대체).

    public static string RemoveCharFromString(string input, char charItem)
    {
        int indexOfChar = input.IndexOf(charItem);
        if (indexOfChar >= 0)
        {
            input = input.Remove(indexOfChar, 1);
        }
        return input;
    }

또는 문자열에서 문자의 모든 반복을 제거하는이 버전 :

    public static string RemoveCharFromString(string input, char charItem)
    {
        int indexOfChar = input.IndexOf(charItem);
        if (indexOfChar < 0)
        {
            return input;
        }
        return RemoveCharFromString(input.Remove(indexOfChar, 1), charItem);
    }

루프에있는 경우 제거 할 구두점 문자 목록을 반복한다고 가정 해 보겠습니다. 다음과 같이 할 수 있습니다.

      private const string PunctuationChars = ".,!?$";
          foreach (var word in words)
                {
                    var word_modified = word;

                    var modified = false;

                    foreach (var punctuationChar in PunctuationChars)
                    {
                        if (word.IndexOf(punctuationChar) > 0)
                        {
                            modified = true;
                            word_modified = word_modified.Replace("" + punctuationChar, "");


                        }
                    }
               //////////MORE CODE
               }

트릭은 다음과 같습니다.

word_modified.Replace("" + punctuationChar, "");

우리는 백만 개의 지표를 사용하기 때문에 Razvan Dumitru 코드의 라틴어 버전이 있습니다. Offcourse 나는 이중 교체를 사용합니다 : D

public static string CleanNumb(string numb) 
{
    foreach (char c in ".,'´")
       numb = numb.Replace(c, ' ');

    return numb.Replace(" ", "");
}

참고 URL : https://stackoverflow.com/questions/6373315/how-to-replace-a-char-in-string-with-an-empty-character-in-c-net

반응형