programing

목록의 문자열 값 바꾸기

skycolor 2023. 5. 12. 21:57
반응형

목록의 문자열 값 바꾸기

"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

반응형