문자열의 마지막 문자를 삭제 사람을 위해 일련의 그룹을 만들고 싶습니다. 나는 이것을

데이터베이스에 연결된 목록에서 많은 정보를 검색하고 웹 사이트에 연결된 사람을 위해 일련의 그룹을 만들고 싶습니다.

나는 이것을 테스트하기 위해 사용하지만 이것은 동적이지 않기 때문에 정말 나쁘다.

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 );

많은 청소기.

그것은 내부의 모든 요소를 추가합니다 groupIdsA의 ','각 사이, 그러나 그것은을 넣어하지 ','말.


답변

C #의 문자열은 변경할 수 없습니다. 코드에서 당신이 할 때 strgroupids.TrimEnd(',');또는 문자열은 수정되지 않습니다 .strgroupids.TrimEnd(new char[] { ',' });strgroupids

strgroupids = strgroupids.TrimEnd(',');대신에 뭔가를해야 합니다.

여기 에서 인용 하십시오 :

문자열은 변경할 수 없습니다. 구문을 사용하면 마치 마치 마치 개체를 만든 것처럼 보이더라도 문자열 개체의 내용을 변경할 수 없습니다. 예를 들어,이 코드를 작성할 때 컴파일러는 실제로 새 문자 시퀀스를 보유 할 새 문자열 객체를 작성하고 해당 새 객체는 b에 할당됩니다. 그런 다음 문자열 “h”는 가비지 수집에 적합합니다.


답변

확장 방법을 추가하십시오.

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!


답변

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

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

그러면 배열의 각 요소 사이 에 구분 기호 (이 경우 “” “)가 추가 됩니다.


답변

string strgroupids = string.Empty;

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

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

ForEach여기 에서의 사용 은 일반적으로 “잘못된”것으로 간주됩니다 (예 : http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx 참조 )

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()));