如何在asp.net中分离字符串和保存数组

本文关键字:字符串 保存 数组 分离 asp net | 更新日期: 2023-09-27 18:04:24

我在db中有列,它将字符串保存为1,2,3,4,5我想把字符串分成1 2 3 4 5并保存在数组中,例如数组应该是int[]数字,int[0] = 1, int[1] = 2 ......

如何在asp.net中分离字符串和保存数组

看起来像是你想要的:

int[] array = text.Split(',')
                  .Select(x => int.Parse(x, CultureInfo.InvariantCulture))
                  .ToArray();

显然,如果任何分割结果不是可解析的整数,这将会爆炸。

(您可能还想使用List<int>而不是数组,作为通常更灵活的集合类型。)

编辑:简短但完整的演示程序:

using System;
using System.Globalization;
using System.Linq;
public class Test
{
    static void Main()
    {
        string eventIds = "1,2,3";
        int[] array =
            eventIds.Split(',')
                    .Select(x => int.Parse(x, CultureInfo.InvariantCulture))
                    .ToArray();
        foreach (int id in array)
        {
            Console.WriteLine(id);
        }
    }
}

代码

Dim str as String = "1,2,3,4,5"
dim objstr() as String = str.split(",")

这是John的优秀代码片段的一个"更安全"的版本,它将通过将它们添加为0来处理不能解析为int的值:

int temp;
int[] array = text.Split(',')
    .Select(x => int.TryParse(x, out temp) ? temp : 0)
    .ToArray();

如果你想要完全安全并放弃任何不能转换为整数的值,那么你可以使用这样的函数:

private static int[] ConvertTextToIntArray(string text)
{
    var integerList = new List<int>();
    var values = text.Split(',');
    int temp;
    foreach (var value in values)
    {
        if (int.TryParse(value, out temp))
        {
            integerList.Add(temp);
        }
    }
    return integerList.ToArray();
}