배열이 있고 ToString을 수행하는 경우 배열 값을 하나의 긴 쉼표로 구분 된 문자열로 배열하거나 배열에서 사용할 수 없습니까? 당신이 string
의 배열이있는 경우Array.ToString()
답변
옵션 1
, 당신은 String.Join
사용할 수 있습니다
string[] values = ...;
string concatenated = string.Join(",", values);
옵션 2
당신이 배열을 처리하는 경우 다른 유형의 .NET 3.5 이상을 사용하는 경우 LINQ를 사용할 수 있습니다.
string concatenated = string.Join(",",
values.Select(x => x.ToString()).ToArray());
C# dude의 배열이 있습니다. seperator first. ;-) –
@Sky : 매개 변수의 순서는 언어와 아무 관계가 없습니다.) –
@Adam - 값을 먼저 넣는 언어는 코딩하지 않았습니까? –
확실히 할 수는 있지만 기본 동작은 아닙니다. 가장 쉬운 방법은 그렇게 (어쨌든 .NET 3.5에서) 아마 :
string joined = string.Join(",", array.Select(x => x.ToString()).ToArray());
MoreLINQ이 할 수있는 기본 방법이 있습니다
string joined = array.ToDelimitedString();
또는 지정을 명시 적으로 구분 :
string joined = array.ToDelimitedString(",");
아니요, 배열의 ToString은 객체의 유형 이름 문자열을 제공합니다. 대신 String.Join 메서드를 사용하십시오.
눈치 채지 못했습니다.
문자열 배열 위해 당신은 사용할 수 있습니다 : 당신이 그것을 직접 코딩 할 필요가 있다고 생각 다른 배열에 대한
string.Join(",", myArray)
합니다.
배열 유형의 ToString이 허용되는 경우 모든 값 유형에 대해 간단한 문자열 결합이 적용됩니다. 노출을위한 대부분의 다른 유형에는 친숙한 기본 ToString도 있습니다. –
String.Join은 ToString()을 자동으로 호출하지 않습니다. 문자열을 문자열 배열로 변환해야합니다.이 문자열은 내 대답과 Adam에 따라 시작해야합니다. –
당신이 String.Join를 호출해야이 효과 (문자열, 문자열 [])
즉를 달성하기 위해
string[] stringArray = new string[] { "a", "b", "c" };
string.Join(",", stringArray);
string.Concat(Object[] args)
을 사용할 수 있습니다. 이 메서드는 args
에있는 모든 개체의 ToString()
메서드를 호출합니다. 불행하게도
YourClass[] yourArray = { new YourClass(1), new YourClass(2), new YourClass(3) };
string concatenated = string.Concat(yourArray);
이 방법 :
public class YourClass
{
private int number;
public YourClass(int num)
{
number = num;
}
public override string ToString()
{
return "#" + number;
}
}
지금 당신이 사용자 정의 클래스의 인스턴스의 배열을 연결할 수 있습니다 : 사용자 정의 클래스에서이 같은 사용자 정의 문자열 변환을 달성하기 위해 ToString()
방법을 대체 할 수 있습니다 구분 기호를 추가하지는 않지만 우아한 것으로 나타났습니다. 변수 concatenated
은 "#1#2#2"
을 포함합니다.
시도해보고 결과를 조사 했습니까? –
실제로 모르겠지만 시도해 볼 수는 있습니다 ... – Ian
MyCustomType []이 아닌 배열 [] – PositiveGuy