我有一组字符串,其中包含"goalXXvalue,goalXXLength,TestXX"等值.它是一个List(of String)我以为我能够循环遍历每个项目并替换我尝试过的下面方法的XX值,但值不会改变.我哪里错了?谢谢
metricList.ForEach(Function(n) n.Replace("XX", "1"))
Dan*_*zey 27
你有几个问题:
.Replace时返回一个新的字符串.呼叫n.Replace不会修改n.n在匿名函数中分配不会影响列表中的值.由于您似乎正在更改列表中的每个字符串,因此似乎没有必要尝试就地修改集合.因此,succint解决方案将使用Linq来创建一个新列表:
var newList = metricList.Select(s => s.Replace("XX", "1")).ToList();
Run Code Online (Sandbox Code Playgroud)
问题:您没有对替换字符串执行任何操作.
您可以使用简单的循环轻松完成此操作:
C#
for(int i = 0; i < metricList.Count; i++)
{
metricList[i] = metricList[i].Replace("XX", "1");
}
Run Code Online (Sandbox Code Playgroud)
VB.NET
For i As Integer = 0 To metricList.Count - 1
metricList(i) = metricList(i).Replace("XX", "1")
Next
Run Code Online (Sandbox Code Playgroud)
代码遍历所有字符串metricList并替换XX为1,然后将值存储回列表中的正确位置,您在代码中没有做什么...
或者使用Linq:
C#
var newList = metricList.Select(x => x.Replace("XX", "1")).ToList();
Run Code Online (Sandbox Code Playgroud)
VB.NET
Dim newList = metricList.Select(Function(x) x.Replace("XX", "1")).ToList()
Run Code Online (Sandbox Code Playgroud)
不要忘记在课程顶部添加linq的引用:
C#
using System.Linq;
Run Code Online (Sandbox Code Playgroud)
VB.NET
Imports System.Linq
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25812 次 |
| 最近记录: |