Chuyển đổi mảng số nguyên thành chuỗi được phân tách bằng dấu phẩy


273

Đó là một câu hỏi đơn giản; Tôi là người mới tham gia C #, làm thế nào tôi có thể thực hiện như sau

  • Tôi muốn chuyển đổi một mảng các số nguyên thành một chuỗi được phân tách bằng dấu phẩy.

Tôi có

int[] arr = new int[5] {1,2,3,4,5};

Tôi muốn chuyển đổi nó thành một chuỗi

string => "1,2,3,4,5"

Câu trả lời:


539
var result = string.Join(",", arr);

Điều này sử dụng quá tải sau đây của string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);

Bạn không cần phải vượt qua đối số chung rõ ràng trong trường hợp này. Nó sẽ được suy ra.
leppie

6
Chuỗi .NET 4 trước.Join (",", Array.Convert ALL (mảng, i => i.ToString ()))
TPAKTOPA

Có một cách đơn giản để làm ngược lại điều này? Lấy chuỗi và đặt nó vào một mảng?
Kory

3
@Kory: Sử dụng phương thức String.Split, xem msdn.microsoft.com/en-us/l Library / từ
Cheng Chen

132

.NET 4

string.Join(",", arr)

.NET sớm hơn

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))

17
Cảm ơn phiên bản tiền .NET4!
kdenney

1
chỉ nhận ra rằng tôi không thể sử dụng phiên bản .net 4 và tôi không hiểu tại sao tôi gặp lỗi cho đến khi tôi thấy câu trả lời của bạn, cảm ơn.
Luis Tellez

Tôi đang sử dụng .NET 4.5. Tôi đã cố gắng nối các số được phân tách bằng dấu phẩy bằng một chuỗi. Tôi gặp lỗi khi nói "không thể chuyển đổi chuỗi [] thành char". Vì vậy, phiên bản trước hoạt động hoàn hảo.
Prasanth G

10
int[] arr = new int[5] {1,2,3,4,5};

Bạn có thể sử dụng Linq cho nó

String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);

5

Bạn có thể có một cặp phương thức mở rộng để thực hiện công việc này dễ dàng hơn:

public static string ToDelimitedString<T>(this IEnumerable<T> lst, string separator = ", ")
{
    return lst.ToDelimitedString(p => p, separator);
}

public static string ToDelimitedString<S, T>(this IEnumerable<S> lst, Func<S, T> selector, 
                                             string separator = ", ")
{
    return string.Join(separator, lst.Select(selector));
}

Vì vậy, bây giờ chỉ cần:

new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();

3

Sử dụng Aggregatephương pháp LINQ để chuyển đổi mảng số nguyên thành chuỗi được phân tách bằng dấu phẩy

var intArray = new []{1,2,3,4};
string concatedString = intArray.Aggregate((a, b) =>Convert.ToString(a) + "," +Convert.ToString( b));
Response.Write(concatedString);

đầu ra sẽ là

1,2,3,4

Đây là một trong những giải pháp bạn có thể sử dụng nếu chưa cài đặt .net 4.


Mặc dù vậy, nó hoạt động kém do nối chuỗi,
Simon Belanger

vâng, nó sẽ hoạt động kém nhưng trước .net 4.0 String.join chỉ lấy mảng chuỗi làm tham số. Vì vậy, trong trường hợp đó chúng ta cũng cần chuyển đổi trong chuỗi. chúng ta có thể sử dụng ToString, nó hoạt động tốt hơn nhưng có vấn đề về ngoại lệ null
sushil pandey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.