programing

문자열의 마지막 문자 삭제

sourcejob 2023. 4. 9. 21:26
반응형

문자열의 마지막 문자 삭제

데이터베이스에 링크된 목록에서 많은 정보를 검색하고 있으며 웹 사이트에 연결된 사용자를 위해 그룹을 만들고 싶습니다.

테스트에는 이것을 사용하고 있습니다만, 이것은 동적이지 않기 때문에 매우 좋지 않습니다.

string strgroupids = "6";

나 지금 이거 쓰고 싶어.하지만 돌려받은 끈은...1,2,3,4,5,

groupIds.ForEach((g) =>
{
    strgroupids = strgroupids  + g.ToString() + ",";
    strgroupids.TrimEnd(',');
});

strgroupids.TrimEnd(new char[] { ',' });

를 삭제하고 싶다.,그 후5확실히 효과가 없어요.

strgroupids = strgroupids.Remove(strgroupids.Length - 1);

MSDN:

String.Remove(Int32) :

지정된 위치에서 시작하여 마지막 위치까지 이어지는 이 문자열의 모든 문자를 삭제합니다.

이렇게 하면 어떨까?

strgroupids = string.Join( ",", groupIds );

훨씬 깨끗해.

모든 요소를 내부에 추가합니다.groupIds와 함께','둘 사이에, 하지만 그것은 두 가지 사이에','마지막에.

c# 의 문자열은 불변입니다.코드에 따라서는strgroupids.TrimEnd(',');또는strgroupids.TrimEnd(new char[] { ',' });strgroupids문자열은 변경되지 않습니다.

이런 걸 해야 돼요strgroupids = strgroupids.TrimEnd(',');대신.

여기서 인용하자면:

문자열은 불변입니다.개체가 생성된 후에는 문자열 객체의 내용을 변경할 수 없습니다.단, 구문에서는 이 작업을 수행할 수 있는 것처럼 보입니다.예를 들어 이 코드를 작성하면 컴파일러는 실제로 새로운 문자열 객체를 생성하여 새로운 문자열 객체를 저장하고 그 새로운 객체가 b에 할당됩니다.문자열 "h"는 가비지 수집에 적합합니다.

C# 8 범위와 인덱스가 도입되어 보다 간결한 새로운 솔루션이 제공되었습니다.

strgroupids = strgroupids[..^1];

확장 메서드를 추가합니다.

public static string RemoveLast(this string text, string character)
{
    if(text.Length < 1) return text;
    return text.Remove(text.ToString().LastIndexOf(character), character.Length);
}

다음으로 다음을 사용합니다.

yourString.RemoveLast(",");

후행 콤마를 삭제합니다.

while (strgroupids.EndsWith(","))
    strgroupids = strgroupids.Substring(0, strgroupids.Length - 1);

이것은 거꾸로입니다만, 처음에 콤마를 추가하는 코드를 작성했습니다.를 사용해 주세요.string.Join(",",g)대신,g는 입니다.string[]...보다 더 좋은 이름을 지어주세요.g나도!

sll 솔루션 추가:끝에 빈칸이 있을 경우를 대비해서 줄을 다듬는 것이 좋습니다.

strgroupids = strgroupids.Remove(strgroupids.Trim().Length - 1);

각 항목에 쉼표를 추가하는 대신 String을 사용할 수 있습니다.참가:

var strgroupids = String.Join(",",  groupIds);

이것에 의해, 어레이내의 각 요소간에 구분자("이 예에서는")가 추가됩니다.

string strgroupids = string.Empty;

groupIds.ForEach(g =>
{
    strgroupids = strgroupids + g.ToString() + ",";
});

strgroupids = strgroupids.Substring(0, strgroupids.Length - 1);

주의:ForEachhttp://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx) 등에서는 보통 "displayed"로 간주됩니다.

일부 LINQ 사용:

string strgroupids = groupIds.Aggregate(string.Empty, (p, q) => p + q + ',');
strgroupids = strgroupids.Substring(0, str1.Length - 1);

엔드 서브스트링 없음:

string strgroupids = groupIds.Aggregate(string.Empty, (p, q) => (p != string.Empty ? p + "," + q : q.ToString()));

string.Join더 낫지만 정말 LINQ를 원한다면ForEach:

var strgroupids = string.Empty;

groupIds.ForEach(g =>
{
    if(strgroupids != string.Empty){
        strgroupids += ",";
    }

    strgroupids += g;
});

주의사항:

  • string.Join ★★★★★★★★★★★★★★★★★」foreach 느리다, 훨씬 느리다, 하다, 둘 다 좋다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다, 느리다.
  • 삭제 , 한 번도 붙이지 않았기
  • 연산자 「」 「」 )+=)는에 편리합니다.
  • .ToString()는 비접속 시 합니다.
  • 문자열을 할 때, 룰룰룰룰 when when whenStringBuilder하는 것이 해야 합니다.

이것을 하는 "빠르고 더러운" 방법은 없습니다.나는 보통 다음을 한다.

mystring= string.Concat(mystring.Take(mystring.Length-1));

해당 코드는 문자열의 마지막 문자를 삭제합니다.

string myString = "Hello;";    
myString = myString.Remove(myString.Length-1);

산출량

안녕하세요.

언급URL : https://stackoverflow.com/questions/7901360/delete-last-char-of-string

반응형