2009-01-27 12 views
26

OK, to głupia rzecz, którą jestem pewna, że ​​robiłem dziesiątki razy, ale z jakiegoś powodu nie mogę jej znaleźć.Array.Join in .Net?

Mam tablicę ... I chcesz uzyskać ciąg z treścią tej tablicy oddzielonych przez ograniczony ...

Gdzie jest (metoda, że ​​nie mogę znaleźć .Join)?

(Jest .Net 2.0, nie mam żadnej rzeczy LINQ)

dziękuję!

Odpowiedz

36

Jeśli pracujesz z ciągami znaków, to prawdopodobnie szukasz tego, czego potrzebujesz: String.Join.

26

Jest na klasy string

String.Join(",", new string[] {"a", "b", "c"}); 

edycji do int ciąg

int[] integers = new int[] { 1,2,3,4,5 }; 
String.Join(",", Array.ConvertAll<int, String>(integers, Convert.ToString)); 
3

Jeśli masz tablicę strings można nazwać String.join(String, String[]). Można go używać, nawet jeśli nie masz tablicę strings, po prostu trzeba być w stanie przekształcić objects do strings

object[] objects = ... 
string[] strings = new string[objects.Length]; 
for (int i = 0; i < objects.Length; i++) 
    strings[i] = objects[i].ToString(); 
string value = String.Join(", ", strings); 
1

można znaleźć metodę w String class.

Przykład wykorzystania Split i Zarejestrowany:

public static void Main() { 

    string str = "on two three, four five six."; 
    char[] separators = {' ', '.', ',' }; 

    // Split the string: 
    string[] parts = str.Split(separators); 

    string allTogether = String.Join(" | ", parts); 

    Console.WriteLine("Joined: "); 
    Console.WriteLine(allTogether); 


    } 
2

Można użyć LINQ to Objects i zapisać się kilka linii

int [] ints = { 0, 1, 2 }; 
string[] intStrings = (from i in ints select i.ToString()).ToArray<string>(); 
string joinedStrings = string.Join(",", intStrings); 

Ups, Właśnie zobaczyłem, że nie masz LINQ, Przepraszam.

1

Nie trzeba konwertować tablicy na ciąg w systemie .NET Framework 4. Nie wiem o poprzednich frameworkach. więc poprzedni kod wydaje kilka wierszy konwertujących tablicę int na tablicę ciągów znaków. po prostu pomiń ten krok (jeśli działa również w twoim Framework).

string[] sA = "11,12,13".Split(','); 
int[] iA = { 21, 22, 23}; 
Console.WriteLine(string.Join("+", iA) + " -- " + string.Join("+", sA)); 

/* displays: 
21+22+23 -- 11+12+13 
*/ 
2
Dim arrStrIds() As String = Array.ConvertAll(arrIntIds, New Converter(Of Integer, String)(
Function(id As Integer) id.ToString())) 

String.Join(",", arrStrIds)