반응형
목록의 문자열 값 바꾸기
"galXXvalue,galXXLength,TestXX"와 같은 값이 포함된 문자열 모음이 있습니다.(String의) List입니다. 각 항목을 루프하여 아래 방법으로 시도한 XX값을 대체할 수 있을 것으로 생각했지만 값이 바뀌지 않습니다.제가 어디서 잘못되고 있나요?감사해요.
metricList.ForEach(Function(n) n.Replace("XX", "1"))
몇 가지 문제가 있습니다.
- 첫째, 문자열은 불변이므로 호출할 때
.Replace
새 문자열을 반환합니다.부르기n.Replace
수정하지 않음n
. - 에 할당.
n
익명 기능은 목록에 있는 값에 영향을 주지 않습니다. - 위의 내용과 상관없이 열거하는 동안에는 열거를 무효화하므로 컬렉션의 내용을 변경할 수 없습니다.
목록의 모든 문자열을 변경하는 것처럼 보이므로 컬렉션을 내부에서 수정할 필요가 없습니다.따라서 Sucint 솔루션은 Linq를 사용하여 새 목록을 만드는 것입니다.
var newList = metricList.Select(s => s.Replace("XX", "1")).ToList();
문제:교체된 문자열을 사용하여 아무것도 수행하지 않습니다.
간단한 루프를 사용하여 쉽게 이 작업을 수행할 수 있습니다.
C#
for(int i = 0; i < metricList.Count; i++)
{
metricList[i] = metricList[i].Replace("XX", "1");
}
VB.NET
For i As Integer = 0 To metricList.Count - 1
metricList(i) = metricList(i).Replace("XX", "1")
Next
코드는 의 모든 문자열을 통해 반복됩니다.metricList
및 대체XX
위해서1
그런 다음 값을 목록의 올바른 위치에 다시 저장합니다. 코드에서 수행하지 않는 작업은...
또는 Linq 사용:
C#
var newList = metricList.Select(x => x.Replace("XX", "1")).ToList();
VB.NET
Dim newList = metricList.Select(Function(x) x.Replace("XX", "1")).ToList()
클래스의 맨 위에 linq에 대한 참조를 추가하는 것을 잊지 마십시오.
C#
using System.Linq;
VB.NET
Imports System.Linq
String 결과를 할당해야 합니다.메서드를 바꿉니다.그래서 당신의 func는 각각의 선택에 대해 대신 무언가를 반환하거나 사용해야 합니다.
언급URL : https://stackoverflow.com/questions/22349387/replace-string-values-in-list
반응형
'programing' 카테고리의 다른 글
@Html.DisplayFor - 날짜 형식("mm/dd/yyyy") (0) | 2023.05.12 |
---|---|
Git에서 하나의 파일을 임의 버전으로 디핑하는 방법은 무엇입니까? (0) | 2023.05.12 |
IQueryable과 INumberable의 차이점은 무엇입니까? (0) | 2023.05.12 |
총알이 없는 순서 없는 목록이 필요합니다. (0) | 2023.05.12 |
어떤 깃 태그에 있는지 표시하시겠습니까? (0) | 2023.05.12 |