stringbuilder로 빌드 된 문자열에서 마지막 문자를 제거하는 가장 좋은 방법
나는 다음이있다
data.AppendFormat("{0},",dataToAppend);
이것의 문제는 내가 루프에서 사용하고 있고 시험용 쉼표가 있다는 것입니다. 후행 쉼표를 제거하는 가장 좋은 방법은 무엇입니까?
데이터를 문자열 하위 문자열로 변경해야합니까?
가장 간단하고 효율적인 방법 은 다음 명령을 수행하는 것 입니다.
data.Length--;
이렇게하면 포인터 (즉, 마지막 인덱스)를 한 문자 뒤로 이동하지만 개체의 변경 가능성은 변경하지 않습니다. 사실, a를 지우는 StringBuilder
것도 가장 좋은 방법입니다 Length
(그러나 실제로 Clear()
구현이보기 때문에 명확성을 위해 메서드를 사용하십시오 ).
data.Length = 0;
다시 말하지만 할당 테이블을 변경하지 않기 때문입니다. 이 바이트를 더 이상 인식하고 싶지 않다고 생각하십시오. 이제를 호출 할 때도 ToString()
, 그 이후의 어떤 것도 인식 Length
하지 못합니다. 그것은 당신이 제공하는 것보다 더 많은 공간을 할당하는 변경 가능한 객체이며, 단순히 이런 방식으로 구축되었습니다.
그냥 사용
string.Join(",", yourCollection)
이렇게하면 StringBuilder
및 루프 가 필요하지 않습니다 .
루프 후에 다음을 사용하십시오.
.TrimEnd(',')
또는 단순히 변경
string commaSeparatedList = input.Aggregate((a, x) => a + ", " + x)
이것은 어떤가요..
string str = "The quick brown fox jumps over the lazy dog,";
StringBuilder sb = new StringBuilder(str);
sb.Remove(str.Length - 1, 1);
나는 stringbuilder의 길이를 조작하는 것을 선호합니다.
data.Length = data.Length - 1;
루프 알고리즘을 변경하는 것이 좋습니다.
- 항목 뒤가 아니라 앞에 쉼표를 추가하십시오.
- false로 시작하는 부울 변수를 사용하고 첫 번째 쉼표를 억제하십시오.
- 테스트 후이 부울 변수를 true로 설정하십시오.
이 string.Join
메서드를 사용하여 항목 모음을 쉼표로 구분 된 문자열로 바꿔야 합니다. 선행 또는 후행 쉼표가 없는지 확인하고 문자열이 효율적으로 구성되도록 보장합니다 (불필요한 중간 문자열없이).
예, 루프가 완료되면 문자열로 변환하십시오.
String str = data.ToString().TrimEnd(',');
두 가지 옵션이 있습니다. 첫 번째는 매우 사용하기 쉬운 Remove
방법으로 매우 효과적입니다. 두 번째 방법은 ToString
시작 색인 및 끝 색인과 함께 사용하는 것 입니다 ( MSDN 문서 ).
나는 StringBuilder 확장 방법을 사용하는 것을 좋아했습니다.
가장 간단한 방법은 Join () 메서드를 사용하는 것입니다.
public static void Trail()
{
var list = new List<string> { "lala", "lulu", "lele" };
var data = string.Join(",", list);
}
StringBuilder가 정말로 필요한 경우 루프 뒤의 끝 쉼표를 잘라냅니다.
data.ToString().TrimEnd(',');
'Development Tip' 카테고리의 다른 글
과거 날짜를 방지하는 jQuery datepicker (0) | 2020.10.17 |
---|---|
CORS는 교차 도메인 AJAX 요청을 수행하는 안전한 방법입니까? (0) | 2020.10.17 |
Android의 기본 갤러리 이미지 뷰어에서 URI를 사용하여 이미지 열기 (0) | 2020.10.17 |
HH : MM : SS 형식으로 JavaScript에서 현재 시간을 표시하는 방법은 무엇입니까? (0) | 2020.10.17 |
IntelliJ IDEA에서 낙타 단어의 개별 단어를 어떻게 선택합니까? (0) | 2020.10.17 |