문자열의 마지막 문자를 삭제
데이터베이스에 연결된 목록에서 많은 정보를 검색하고 웹 사이트에 연결된 사람을 위해 일련의 그룹을 만들고 싶습니다.
나는 이것을 테스트하기 위해 사용하지만 이것은 동적이 아니므로 정말 나쁘다.
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);
String.Remove (Int32) :
이 문자열에서 지정된 위치에서 시작하여 마지막 위치까지 모든 문자를 삭제합니다.
이런 식으로 하는건 어때?
strgroupids = string.Join( ",", groupIds );
많은 청소기.
그것은 내부의 모든 요소를 추가합니다 groupIds
A의 ','
각 사이, 그러나 그것은을 넣어하지 ','
말.
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()));
sll의 해결책에 추가 : 끝에 공백이있는 경우 문자열을 자르는 것이 좋습니다.
strgroupids = strgroupids.Remove(strgroupids.Trim().Length - 1);
string.Join
더 좋지만 실제로 LINQ를 원한다면 ForEach
:
var strgroupids = string.Empty;
groupIds.ForEach(g =>
{
if(strgroupids != string.Empty){
strgroupids += ",";
}
strgroupids += g;
});
몇 가지 참고 사항 :
string.Join
그리고foreach
이것보다 훨씬 낫습니다.,
추가되지 않으므로 마지막을 제거 할 필요가 없습니다.- 증가 연산자 (
+=
)는 문자열에 추가하는 데 편리합니다. .ToString()
문자열이 아닌 문자열을 연결할 때 자동으로 호출되므로 불필요- 큰 문자열을 처리 할 때는 문자열
StringBuilder
을 연결하는 대신 고려해야합니다.
참고 URL : https://stackoverflow.com/questions/7901360/delete-last-char-of-string
'Programing' 카테고리의 다른 글
Xcode '빌드 및 아카이브'메뉴 항목 비활성화 (0) | 2020.04.13 |
---|---|
Docker 명령이 Docker 데몬에 연결할 수 없습니다 (0) | 2020.04.13 |
Xcode : 프로세스에 대한 작업을 가져 오지 못했습니다 (0) | 2020.04.13 |
대소 문자를 구분하지 않는 비교 NSString (0) | 2020.04.13 |
Bootstrap v4에서 visible-** 및 hidden-** 누락 (0) | 2020.04.13 |