将逗号分隔的整数字符串转换为整数数组。

11 浏览
0 Comments

将逗号分隔的整数字符串转换为整数数组。

我只找到了一种相反的方式来做:从一个整数列表或数组创建一个逗号分隔的字符串,但是没有找到将类似于 string str = "1,2,3,4,5"; 这样的输入转换为整数数组或列表的方法。

以下是我的实现(受到 Eric Lippert 的帖子 的启发):

    public static IEnumerable StringToIntList(string str)
    {
        if (String.IsNullOrEmpty(str))
        {
            yield break;
        }
        var chunks = str.Split(',').AsEnumerable();
        using (var rator = chunks.GetEnumerator())
        {
            while (rator.MoveNext())
            {
                int i = 0;
                if (Int32.TryParse(rator.Current, out i))
                {
                    yield return i;
                }
                else
                {
                    continue;
                }
            }
        }
    }

你认为这是一个好的方法吗?还是有更简单、甚至内置的方法?

编辑:对于任何混淆之处,很抱歉,但该方法需要处理无效的输入,如 "1,2,,,3""###, 5,",并跳过它们。

0
0 Comments

问题出现的原因:

在对逗号分隔的整数字符串进行转换为整数数组的过程中,作者发现不需要使用lambda函数,并且只针对有效输入进行操作。

解决方法:

作者提供了一种解决方法,即使用Array.ConvertAll函数来实现。具体的代码如下:

Array.ConvertAll<string, int>(value.Split(','), Convert.ToInt32);

在这段代码中,value是待转换的逗号分隔的整数字符串。该代码会将value按照逗号进行分割,并将分割后的每个元素转换为整数,最后返回一个整数数组。需要注意的是,这个方法只适用于有效输入。此外,作者还指出了代码中无需使用这部分的原因。

0
0 Comments

将逗号分隔的整数字符串转换为整数数组的问题出现的原因是需要将一个以逗号分隔的字符串转换为整数数组。在给出的代码中,提供了两种解决方法。

第一种解决方法是使用foreach循环。首先,检查给定的字符串是否为null或空。如果是,则直接退出方法。然后,使用Split(',')方法将字符串拆分为字符串数组,以逗号作为分隔符。然后,使用TryParse方法将每个字符串尝试转换为整数。如果转换成功,则使用yield return语句将整数返回。如果转换失败,则忽略该字符串。通过使用yield return语句,可以将整数逐个返回,而不是创建一个完整的整数数组。

第二种解决方法是使用LINQ。首先,使用null条件运算符将给定的字符串转换为非空字符串。然后,使用Split(',')方法将字符串拆分为字符串数组,以逗号作为分隔符。最后,使用Select方法将每个字符串转换为整数,使用int.Parse方法进行转换。这种方法更简洁,如果无法解析某个数字,则会抛出异常。

通过上述两种方法,可以将逗号分隔的整数字符串转换为整数数组。这些解决方法提供了不同的处理方式,可以根据具体需求选择适合的方法。

0
0 Comments

这段对话中讨论了如何将逗号分隔的字符串转换为整数数组的问题。问题的原因是需要将字符串中的每个整数提取出来,并将它们存储在一个整数数组中。以下是问题的解决方法:

首先,可以使用Split()方法将字符串按逗号分割成字符串数组。然后,可以使用Select()方法将每个字符串转换为整数,使用int.Parse()方法进行转换。最后,使用ToArray()方法将结果转换为整数数组。

另外,还可以使用一个辅助方法TryParseInt32()来尝试将字符串转换为整数。这个方法会返回一个可空的int,如果转换成功则返回整数的值,否则返回null。然后,可以使用Select()方法将每个字符串都尝试转换为整数,使用Where()方法过滤掉转换失败的结果,最后使用Select()方法将可空的int转换为int。

在这段对话中,还提到了使用方法组转换和lambda表达式的不同之处,以及使用LINQ进行查询的不同形式。

这段对话提供了多种解决方案,可以根据具体需求选择其中的一种来将逗号分隔的字符串转换为整数数组。

0