2016-06-12 15 views
5

Tôi đang ở ngực vào lúc này, tôi có mảng này chuỗi:Làm thế nào để chuyển đổi mảng chuỗi thành mảng dài?

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

tôi cần phải chuyển đổi chúng để kiểu dữ liệu mảng dài trong C#:

long[] LongNum= { 4699307989721714673, 4699307989231714673, 4623307989721714673, 4577930798721714673 }; 

Nhưng tôi không có ý tưởng như thế nào, là nó thậm chí có thể?

Trả lời

7

Bạn có thể sử dụng các chức năng mở rộng đơn giản Linq.

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

hoặc bạn có thể sử dụng long.TryParse trên mỗi chuỗi.

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(); 
2
var longArray = StringNum.Select(long.Parse).ToArray(); 

enter image description here

3

Nó có lẽ có thể được thực hiện trong vòng chưa mã với LINQ, nhưng đây là phương pháp truyền thống: loop mỗi chuỗi, chuyển nó sang một chặng đường dài:

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

return longs.ToArray(); 
1

Nếu bạn đang tìm cách nhanh nhất với mức sử dụng bộ nhớ nhỏ nhất có thể tại đây là

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]); 

Sử dụng new List<long>() là xấu bởi vì mỗi khi cần mở rộng, nó sẽ phân bổ lại rất nhiều bộ nhớ. Nó là tốt hơn để sử dụng new List<long>(StringNum.Lenght) để phân bổ đủ bộ nhớ và ngăn chặn nhiều bộ nhớ reallocations. Phân bổ đủ bộ nhớ để liệt kê tăng hiệu suất nhưng vì bạn cần long[] cuộc gọi thêm ToArray trên List<> sẽ thực hiện lại toàn bộ bộ nhớ một lần nữa để tạo mảng. Mặt khác, bạn biết kích thước của đầu ra và ban đầu bạn có thể tạo một mảng và thực hiện phân bổ bộ nhớ.

0

Bạn có thể lặp qua mảng string và tiếp tục chuyển đổi chuỗi thành số bằng cách sử dụng hàm long.Parse(). Hãy xem xét các đoạn mã sau:

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

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

này chuyển và lưu trữ mỗi string như một giá trị long trong mảng LongNum.

+0

Lưu ý: Tôi đã viết câu trả lời này trong khi @doctor đăng câu trả lời của mình. Câu trả lời của chúng tôi tương tự nhưng tôi không thể được thông báo khi anh ấy đăng câu trả lời của mình kể từ khi tôi đang di động. –

Các vấn đề liên quan