문자열에서 마지막 특정 문자 제거 C #


87

WinForms c #을 사용합니다. 아래와 같은 문자열 값이 있습니다.

string Something = "1,5,12,34,";

문자열에서 마지막 쉼표를 제거해야합니다. 그래서 어떻게 삭제할 수 있습니까?


16
왜 그런가 string? 나는 쉼표를 ints에 연결하는 루프 때문에 가정합니다 . string.Join(",", ints)대신 사용할 수 있습니다 . 그것은 처음에 후행 쉼표를 피합니다.
Tim Schmelter 2013

답변:


258

시도해보십시오 string.TrimEnd():

Something = Something.TrimEnd(',');

5
이것은 문자열이 실제로 쉼표로 끝나는 지 여부를 미리 알 수없는 상황을 포함하여 모든 문자열에서 작동하기 때문에 최상의 솔루션입니다.
East of Nowhere

6
그렇기 때문에 내가 쉽게 쓸 수있는 것들에도 여전히 해결책을 찾고 있습니다. 일반적으로 다른 사람이 문제를 해결했습니다. :)
dpberry178

1
따라서 작은 따옴표는 실수가 아닙니다. 오늘 나는 문자와 문자열이 각각 작은 따옴표와 큰 따옴표로 정의된다는 것을 배웠습니다.
egmfrs

20

King King의 대답 은 물론 맞습니다. 또한 Tim Schmelter의 의견 은 귀하의 경우에도 좋은 제안입니다.

그러나 문자열에서 마지막 쉼표를 정말로 제거하려면 마지막 쉼표 의 색인을 찾아서 다음과 같이 제거해야합니다.

string s = "1,5,12,34,12345";
int index = s.LastIndexOf(',');
Console.WriteLine(s.Remove(index, 1));

출력은 다음과 같습니다.

1,5,12,3412345

여기에 demonstration.

이 방법을 원할 것 같지는 않지만 지적하고 싶습니다. 그리고 String.Remove메서드는 원래 문자열의 문자를 제거하지 않고 새 문자열을 반환합니다.


5

시험 string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);

3

TrimEnd 메서드는 문자열이 아닌 입력 문자 배열을 사용합니다. 아래의 Dot Net Perls 코드 는 TrimEnd와 동일한 기능을 수행하는 방법에 대한보다 효율적인 예를 보여줍니다.

static string TrimTrailingChars(string value)
{
    int removeLength = 0;
    for (int i = value.Length - 1; i >= 0; i--)
    {
        char let = value[i];
        if (let == '?' || let == '!' || let == '.')
        {
            removeLength++;
        }
        else
        {
            break;
        }
    }
    if (removeLength > 0)
    {
        return value.Substring(0, value.Length - removeLength);
    }
    return value;
}

1

또는 다음과 같이 먼저 Char Array로 변환 할 수 있습니다.

string Something = "1,5,12,34,";
char[] SomeGoodThing=Something.ToCharArray[];

이제 각 캐릭터가 있습니다 indexed.

SomeGoodThing[0] -> '1'
SomeGoodThing[1] -> ','

주위에서 놀아 라.


1

아래에서 시도

Something..TrimEnd ( ",". ToCharArray ());


0
Dim psValue As String = "1,5,12,34,123,12"
psValue = psValue.Substring(0, psValue.LastIndexOf(","))

산출:

1,5,12,34,123

질문은 VB가 아닌 C #에 관한 것입니다.
metabuddy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.