Chciałbym przekonwertować tablicę ciągów na pojedynczy ciąg.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
Chciałbym mieć coś takiego jak „Hello World!”
Chciałbym przekonwertować tablicę ciągów na pojedynczy ciąg.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
Chciałbym mieć coś takiego jak „Hello World!”
Odpowiedzi:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string.Join("", test);
var separator = ", "; string.Join(separator , test);
string.Join(string.Empty, test)raczej używanie niż używanie empty-paranthesis.
Nieco szybszą opcją niż użycie wspomnianej już Join()metody jest metoda Concat () . Nie wymaga tak jak pustego parametru separatora Join(). Przykład:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = String.Concat(test);
stąd prawdopodobnie szybciej.
Concatjest lepiej, w kodzie wewnętrznym Joindoda separator po każdym elemencie. Ale Concatnie ma takich kodów, jest prostszy i bardziej bezpośredni niż Join. To jest najlepsza odpowiedź.
Próbować:
String.Join("", test);
co powinno zwrócić łańcuch łączący dwa elementy razem. ""wskazuje, że chcesz, aby ciągi były połączone ze sobą bez żadnych separatorów.
"Hello "w pytaniu miał już spację na końcu. Gdyby jeszcze nie było miejsca, miałbyś rację, a użycie go " "jako separatora miałoby większy sens.
Potrzebujesz prostego ciągu znaków.Concat ().
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = string.Concat(test);
Jeśli potrzebujesz również dodać separator (spacja, przecinek itp.), Powinieneś użyć string.Join ().
string[] test = new string[2];
test[0] = "Red";
test[1] = "Blue";
string result = string.Join(",", test);
Jeśli musisz to zrobić na tablicy ciągów zawierającej setki elementów, niż string.Join () jest lepsza z punktu widzenia wydajności. Po prostu podaj "" (pusty) argument jako separator. StringBuilder może być również używany ze względu na wydajność, ale sprawi, że kod będzie nieco dłuższy.
Concati Joinsą szybsze niż StringBuilderjeśli masz 4 lub mniej ciągów do połączenia.
Aggregate może być również używany do tego samego.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
String.Joinze względu na wiele dodatkowych ciągów. Przeczytaj stackoverflow.com/questions/217805/…, aby zapoznać się z prawidłowym wariantem Aggregate.
string ConvertStringArrayToString(string[] array)
{
//
// Concatenate all the elements into a StringBuilder.
//
StringBuilder strinbuilder = new StringBuilder();
foreach (string value in array)
{
strinbuilder.Append(value);
strinbuilder.Append(' ');
}
return strinbuilder.ToString();
}
string.Join(" ", array)(z wyjątkiem twojego dodaje spację na końcu). Dlaczego nie skorzystać po prostu z tego w bibliotece?
W przyjętej odpowiedzi, String.Join nie jest najlepszą praktyką w jej użyciu. Należy użyć String.Concat, ponieważ OP zawierał spację końcową w pierwszym elemencie: „Hello” (zamiast używać ogranicznika null).
Jednakże, ponieważ OP poprosił o wynik „Hello World!”, String.Join jest nadal odpowiednią metodą, ale końcowe białe znaki powinny zostać przeniesione do separatora.
// string[] test = new string[2];
// test[0] = "Hello ";
// test[1] = "World!";
string[] test = { "Hello", "World" }; // Alternative array creation syntax
string result = String.Join(" ", test);