【问题标题】:VB.NET: Prepend a string to all strings in a list of strings. Is there an existing method that does this?VB.NET:为字符串列表中的所有字符串添加一个字符串。是否有现有的方法可以做到这一点?
【发布时间】:2011-03-25 19:46:52
【问题描述】:

我有一个字符串列表。对于该列表中的每个字符串,我想预先添加另一个字符串。我写了一个方法来做到这一点,但我想知道 .NET 中是否已经有一些东西可以用来做这件事。这似乎是可以内置的东西,但我找不到任何东西。

这是我写的方法:

Private Function PrependToAllInList(ByRef inputList As List(Of String), ByRef prependString As String) As List(Of String)
    Dim returnList As List(Of String) = New List(Of String)
    For Each inputString As String In inputList
        returnList.Add(String.Format("{0}{1}", prependString, inputString))
    Next
    Return returnList
End Function

它可以工作,但我宁愿尽可能使用内置函数。感谢您的帮助。

【问题讨论】:

  • 继续下一个任务吧! 笑容
  • 诚然,您不想花费所有时间来重构代码,但我认为当开发人员说“必须有更好的方法”时,这是一个好兆头这样做”,然后试图找出答案。当这成为一种习惯时,您将不断成为更好的开发人员。
  • 我只是想重构一些代码。 :) 使用这种方法似乎有些不对劲。

标签: vb.net string list methods


【解决方案1】:

如果您可以使用 LINQ(.NET 3.5 或更高版本),则可以使用简单的 LINQ 查询为您完成工作:

Dim qry = stringList.Select(Function(s) "prepend this " & s)
Dim returnList = qry.ToList()

默认情况下,Select() 将返回一个 IEnumerable(Of String),它应该可以工作。如果您确实需要将集合作为列表,则可以包含.ToList() 命令。但是,如果您只打算遍历集合(例如 For Each s As String in qry),则无需承担将其转换回列表的费用。

【讨论】:

  • 这很好用。谢谢!之前没用过LINQ,所以没想到那里看。
  • @Jeremy LINQ 很棒!任何时候你使用For Each 循环,你都可以使用LINQ。查看101 LINQ Samples
【解决方案2】:
returnList = strlistList.Aggregate(New List(Of String), _
                 Function(list, s) list.Add("prepend this " & s) )

(注意,我是 C# prog,所以我不确定语法)

【讨论】:

    【解决方案3】:

    您可以使用 String.Insert 而不是 String.Format 来使其更接近您的预期。

    String.Insert

    【讨论】:

      【解决方案4】:

      您所说的是映射函数,我在 vb.net 中没有遇到任何预定义的映射函数,但是您可以通过您拥有的方式或使用 lambda 表达式、委托或 LINQ 来实现这一点。

      http://www.panopticoncentral.net/archive/2006/12/08/18587.aspx 上有一篇关于为此目的使用代表的精彩博文

      这样做的好处是它可以在 .NET 2.0 中工作 - 但它不像 LINQ 那样优雅,可以在 3.5 及更高版本中使用...

      inputList.Select(Function(s) String.Format("{0}{1}", pre, s).ToList();
      

      【讨论】:

        【解决方案5】:

        顺便说一句,您可以使用string.concat 来连接两个字符串,而不是使用string.format。

        所以不是

        String.Format("{0}{1}", prependString, inputString)
        

        你可以放

        String.Concat(prependString, inputString)
        

        ...因为您似乎热衷于保持代码尽可能干净:)

        【讨论】:

        • 感谢 String.Concat 的提示。
        猜你喜欢
        • 1970-01-01
        • 2022-12-15
        • 2012-12-03
        • 2011-03-21
        • 1970-01-01
        • 2012-10-04
        • 2011-06-26
        • 2018-08-10
        • 1970-01-01
        相关资源
        最近更新 更多