문자열의 마지막 문자 삭제
데이터베이스에 링크된 목록에서 많은 정보를 검색하고 있으며 웹 사이트에 연결된 사용자를 위해 그룹을 만들고 싶습니다.
테스트에는 이것을 사용하고 있습니다만, 이것은 동적이지 않기 때문에 매우 좋지 않습니다.
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와 함께','둘 사이에, 하지만 그것은 두 가지 사이에','마지막에.
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 when
StringBuilder하는 것이 해야 합니다.
이것을 하는 "빠르고 더러운" 방법은 없습니다.나는 보통 다음을 한다.
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
'programing' 카테고리의 다른 글
| 현재 Git 작업 트리에서 로컬(추적되지 않은) 파일을 제거하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
|---|---|
| python xlrd 형식이 지원되지 않거나 파일이 손상되었습니다. (0) | 2023.04.09 |
| 어레이 길이를 가져오시겠습니까? (0) | 2023.04.09 |
| Moq + 유닛 테스트 - 시스템반사.TargetParameterCountException: 매개 변수 수가 일치하지 않습니다. (0) | 2023.04.09 |
| Python의 순환 목록 반복기 (0) | 2023.04.09 |