【问题标题】:VB .Net concatenation/loopVB .Net 连接/循环
【发布时间】:2010-06-21 16:55:48
【问题描述】:

我有这行代码要连接 - 或者至少解决循环问题...

test = 1 - ("0." & thisnumber(0) & thisnumber(1) & thisnumber(2) & thisnumber(3) ... thisnumber(500) )

我希望它有一个循环......

我只是想将所有数组值放入 1 个变量中,因为它对于小数来说太长了。 -所以我希望它循环并进行工作测试。

-增加thisnumber()(-这是一个包含值的数组,例如2,5,0,0,0,0,0,0,3,0,0,1)

直到达到 500 左右,

可以在其中实现一个循环吗?

或者建议一个方法。

【问题讨论】:

  • 我怎样才能得到一个循环来增加这个数字的数组位置的值? -我只想发现一次测试,-不要循环整个事情。我只希望括号循环(增加数组位置)。
  • VB.NET concatenation problem 的可能重复项
  • 请不要转发相同的问题。
  • 很多人对我的问题感到困惑,我已经改进了它。

标签: vb.net


【解决方案1】:

请原谅未经测试的 C# 语法:

var intArray = new StringBuilder();
intArray.Append("0.")
foreach(var number in thisnumber)
{
  intArray.Append(number.toString());
}
var test = 1- Double.Parse(intArray.toString());

【讨论】:

  • 所以如果我有值 thisnumber(0) = 1, thisnumber(1) = 5, thisnumber(2) = 0, thisnumber(3) = 7... 它会做 1 - 0.1507?
  • 我没有测试它,但这就是想法。我不知道 Double 数据类型有什么样的精度,但这应该可以帮助您入门。
  • 使用 Decimal.Parse() 可能更精确。 social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/…
【解决方案2】:

您可以使用 LINQ 来做到这一点(尽管我不清楚 1 - (... 部分应该是什么,因为您不能从数字中减去字符串)。

处理您问题的相关部分——“循环”数组访问部分:

Dim data As String = String.Join((From Idx in Enumerable.Range(0, 500) Select thisnumber(Idx).ToString()).ToArray(), "")

这会将数组的所有元素连接成一个字符串。

这解决了您的问题的字面要求(仅循环数组访问部分),但我建议您使用另一种更具可读性的解决方案,例如另一个用户已经概述的基于 StrinBuilder 的方法。

【讨论】:

    【解决方案3】:

    string.Concat 将接受一个字符串数组...

    double d = 0.0;
    string[] values = new[] { "1", "4", "0", "9" };
    
    d = 1 - double.Parse(string.Concat("0.", string.Concat(values)));
    

    【讨论】:

      【解决方案4】:

      为此使用generic List(of Int32),因为它更具可读性和性能。 将您的数字添加到列表中,然后遍历它并将数字附加到 StringBuilder。

      【讨论】:

        猜你喜欢
        • 2017-03-03
        • 2012-11-07
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        • 2010-09-25
        相关资源
        最近更新 更多