如何将字符串数组转换为长整型数组?

7
我可以帮您进行翻译。以下是需要翻译的内容:

目前我很忙,我有一个字符串数组:

string[] StringNum = { "4699307989721714673", "4699307989231714673", "4623307989721714673", "4577930798721714673" };

我需要将它们转换为C#中的长整型数组数据类型:
long[] LongNum= { 4699307989721714673, 4699307989231714673, 4623307989721714673, 4577930798721714673 };

但是我不知道怎么做,这真的可能吗?
5个回答

13

你可以使用简单的 Linq 扩展函数。

long[] LongNum = StringNum.Select(long.Parse).ToArray();

或者你可以在每个字符串上使用long.TryParse

List<long> results = new List<long>();
foreach(string s in StringNum)
{
    long val;

    if(long.TryParse(s, out val))
    {
        results.Add(val);
    }
}

long[] LongNum = results.ToArray();

5
var longArray = StringNum.Select(long.Parse).ToArray();

enter image description here


3

使用 Linq 或许可以用更少的代码完成,但这里提供传统的方法:遍历每个字符串,将其转换为 long 类型:

var longs = new List<Long>();
foreach(var s in StringNum) {
    longs.Add(Long.Parse(s));
}

return longs.ToArray();

1
如果您正在寻找最快速且内存使用最小的方法,那么这里就是它。
string[] StringNum = { "4699307989721714673", "4699307989231714673", "4623307989721714673", "4577930798721714673" };
long[] longNum = new long[StringNum.Length];

for (int i = 0; i < StringNum.Length; i++)
    longNum[i] = long.Parse(StringNum[i]);

使用new List<long>()是不好的,因为每次需要扩展时都会重新分配很多内存。最好使用new List<long>(StringNum.Lenght)来分配足够的内存,以防止多次内存重新分配。分配足够的内存到列表中可以提高性能,但由于需要long[],所以在List<>上进行ToArray的额外调用将再次执行整个内存重新分配以生成数组。另一方面,您知道输出的大小,可以最初创建一个数组并进行内存分配。

0
你可以遍历 string 数组,并使用 long.Parse() 函数将字符串转换为数字。考虑下面的代码:
string[] StringNum =  
{ "4699307989721714673",  
  "4699307989231714673",  
  "4623307989721714673",  
  "4577930798721714673" };

long[] LongNum = new long[4];
for(int i=0; i<4; i++){
    LongNum[i] = long.Parse(StringNum[i]);
}

这将每个string转换并存储为long值在LongNum数组中。


注意:当@doctor发布他的答案时,我正在撰写这个答案。我们的答案相似,但由于我在使用移动设备,无法收到通知。 - user5794376

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接