'Why doesn't this work? Dim myStrings As String() = New String() {string1, string2, string3,} For Each s As String In myStrings If String.IsNullOrEmpty(s) Then s = "" End If s = "-" & s.Trim() & "-" Next
如果
string1
包含 "foo"
,我的意图是string1
包含 "-foo-"
循环执行后。我怎样才能使这项工作?我猜这段代码会复制我的字符串并修改它们。如何在循环中修改我的字符串?
更新我修改了代码以使用数组索引:
' It still doesn't work. Dim myStrings As String() = New String() {string1, string2, string3} For i As Integer = 0 To myStrings.Count() - 1 If String.IsNullOrEmpty(myStringss(i)) Then myStringss(i) = "" End If myStrings(i) = "-" & myStrings(i) & "-" Next
这段代码的结果,特别是每个元素的数组和索引,修改了数组,但我的字符串仍然具有相同的旧值。显然,像这样初始化一个数组只是将我的值复制到一个新数组中。如何在循环中修改我的原始值?
重点:该数组仅用于循环目的。我需要修改
string1
, string2
, 和 string3
类似地,但是一旦这个循环通过,数组就不再有用了。哦,我的真实代码有超过 3 个字符串。我只想说,如果我使用的语言有更多的指针和引用,我想我只会有一个指向
string1
的指针数组。 , string2, and
字符串3`。将这些字符串复制到数组中似乎是多余的。
最佳答案
这个例子是在 C# 中,但同样的原则也适用。
string[] myStrings = new string[] { "temp", "temp2", "temp3" };
myStrings = myStrings.Select(x => "-" + x + "-").ToArray();
输出:
"-temp-" "-temp2-" "-temp3-"
MSDN 文章链接:http://msdn.microsoft.com/en-us/library/bb548891.aspx
您还可以使用委托(delegate)函数来检查字符串是否为空。将致力于提供 VB 解决方案并在我得到它时进行编辑
编辑:
Dim myStrings As String() = _
{"apple", "banana", "mango", Nothing, "passionfruit", "grape"}
myStrings = _
myStrings.Select(Function(fruit) ("-" & fruit & "-")).ToArray()
输出:
"-apple-" "-banana-" "-mango-" "--" "-passionfruit-" "-grape-"
编辑 2:与第一次编辑做同样的事情,但更具可读性
Private Function TESTER(ByVal fruit As String) As String
Return "-" & fruit & "-"
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myStrings As String() = _
New String() {"apple", "banana", "mango", Nothing, "passionfruit", "grape"}
myStrings = _
myStrings.Select(AddressOf TESTER).ToArray()
End Sub
关于.net - 如何使用 "For Each"循环修改字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3299759/