【问题标题】:Convert numbers in a string to array in visual basic在 Visual Basic 中将字符串中的数字转换为数组
【发布时间】:2016-11-06 01:22:42
【问题描述】:

我正在输入以逗号分隔的数字。我需要将这些数字存储在一个双元素数组中,忽略用户输入的任何其他字符。但问题是TextBox 索引和数组索引不同,而且 2.4 存储为每个单独的元素。

比如我有一个这样的字符串

"1,2.4,5.4,6,2"

如何将其转换为包含元素的数组

(1),(2.4),(5.4),(6),(2)

【问题讨论】:

  • 您需要错误控制吗? de 字符串可以是1,2,potato,5.6,8 吗?或者它肯定是由昏迷分隔的正确数字?另外,您需要将它们放在数组上还是列表上可行?
  • 是的,它可以,这就是为什么我需要忽略数字以​​外的字符,但这也忽略了浮点数,
  • 我有一段时间没有接触过java,所以somoene比我更好地将它翻译成代码。但只是:使用拆分创建一个字符串数组,创建一个双精度列表,在 for 循环中迭代字符串数组,在每次迭代中尝试解​​析为双精度并将其添加到列表中。
  • @Aimnox :您在撰写该评论的同时,我撰写了关于该问题的答案:)。 -- 这也是 VB.NET,而不是 Java。 (:

标签: arrays vb.net type-conversion


【解决方案1】:

利用String.Split() 函数并将其与For-loop 结合起来应该会给您想要的结果。

这也会检查它是否真的是一个数字,以避免错误:

Public Function StringToDoubleArray(ByVal Input As String, ByVal Separators As String()) As Double()
    Dim StringArray() As String = Input.Split(Separators, StringSplitOptions.RemoveEmptyEntries) 'Split the string into substrings.
    Dim DoubleList As New List(Of Double) 'Declare a list of double values.

    For x = 0 To StringArray.Length - 1
        Dim TempVal As Double 'Declare a temporary variable which the resulting double will be put in (if the parsing succeeds).
        If Double.TryParse(StringArray(x), TempVal) = True Then 'Attempt to parse the string into a double.
            DoubleList.Add(TempVal) 'Add the parsed double to the list.
        End If
    Next

    Return DoubleList.ToArray() 'Convert the list into an array.
End Function

Separators As String() 参数是一个字符串数组,该函数应将字符串分割为该数组。每次调用它时,您都可以使用所需的分隔符初始化一个新数组(单个分隔符很好)。

例如:

StringToDoubleArray("1,2;3", New String() {",", ";"})

以上内容将用逗号 (,) 和分号 (;) 分隔。

用途示例:

Dim Values As Double() = StringToDoubleArray(TextBox1.Text, New String() {","}) 'Uses a comma as the separator.

更新:

在线测试:http://ideone.com/bQASvO

【讨论】:

  • 谢谢 :) 。完美答案
  • @Half-Bloodprince :很高兴我能帮上忙,谢谢!
  • @VisualVincent - 一个小小的批评。您可能两次解析字符串。不要在第一个中使用 Nothing,而是将结果发送到一个变量,如果解析良好,请在列表中添加该变量。
  • @dbasnett:感谢您的提醒!当我写答案时,我已经意识到了这一点,但我只是懒得这样做,因为我无法测试它。虽然它不是一个大瓶颈,除非你解析一个 really 大数组。我现在重写代码。
  • @Half-Bloodprince :我更新了代码以避免多次解析字符串。请看(我也更新了在线测试)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2017-01-18
  • 1970-01-01
相关资源
最近更新 更多