.net - 如何使用 "For Each"循环修改字符串?

标签 .net vb.net string loops foreach

       '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/

相关文章:

c# - 将部分构造函数参数传递给 caSTLe windsor 容器

.net - 为什么不能通过 .NET 中的 COM 使用 .NET COM 库?

c# - 使用 C# 的美味 .NET API

c# - 类属性的名称到字符串

c - 从 1 个单词生成 2 个单词(大写和小写)

c# - Task<T> 中的单线程计时器和/或间隔

mysql - 如何在 vb.net 中使用 GetSchema 获取数据库中的表名称

.net - 在 Intellisense 注释中显示空行

vb.net - 具有完整事件的 vb6 上的 Show.net 控件

C内存重叠?