programing

배열 목록에서 쉼표로 구분된 문자열을 만들려면 어떻게 해야 합니까?

magicmemo 2023. 6. 10. 08:42
반응형

배열 목록에서 쉼표로 구분된 문자열을 만들려면 어떻게 해야 합니까?

ID 배열 목록을 처리 스크립트에 저장하는 중입니다. 이 목록을 디버그 로그에 출력하기 위해 쉼표로 구분된 목록으로 지정합니다.이것을 반복하지 않고 쉽게 얻을 수 있는 방법이 있습니까?

편집: .net 2.0 이상에서 사용할 수 있는 목록(Of T)을 알려준 Joel에게 감사합니다.사용 가능한 제품이 있으면 작업이 훨씬 쉬워집니다.

네, 저는 제 질문에 답하고 있지만, 아직 여기서 찾지 못했고 이것이 꽤 교묘한 것이라고 생각했습니다.

...VB.NET에서:

String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))

...인 C#

string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))

변환이 제대로 수행되도록 하려면 Option Strict를 사용하는 경우 ArrayList에 항목이 Strings로 저장되어 있어야 합니다.

편집: .net 2.0 이상을 사용하는 경우 List(Of String) 유형의 개체를 만들기만 하면 필요한 것을 얻을 수 있습니다.이 문제를 제기해 주신 Joel에게 정말 감사드립니다!

String.Join(",", TargetList.ToArray())

지금까지의 해결책은 모두 상당히 복잡합니다.관용적인 해결책은 의심할 여지 없이 다음과 같습니다.

String.Join(",", x.Cast(Of String)().ToArray())

새로운 프레임워크 버전에서는 화려한 곡예가 필요 없습니다.그다지 현대적이지 않은 버전을 가정하면 다음과 같은 것이 가장 쉬울 것입니다.

Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))

mspmsp의 두 번째 솔루션도 좋은 접근 방식이지만, 그것은 실패했기 때문에 작동하지 않습니다.AddressOf키워드또한.Convert.ToString다소 비효율적이며(불필요한 내부 평가의 대체), 그리고Convert수업은 일반적으로 매우 깨끗하게 설계되지 않았습니다.저는 특히 그것이 완전히 불필요하기 때문에 피하는 경향이 있습니다.

다음과 같은 것:

String.Join(",", myArrayList.toArray(string.GetType()) );

기본적으로 루프는...

편집

어때요?

string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));

string.Join(" ,", myArrayList.ToArray());.net 프레임워크 4.5에서 작동합니다.

다음은 문자열을 사용하여 쉼표로 구분된 문자열을 만드는 간단한 예입니다.문자열 목록에서 조인():

List<string> histList = new List<string>();
histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff"));
histList.Add(Index.ToString());
/*arValue is array of Singles */
foreach (Single s in arValue)
{
     histList.Add(s.ToString());
}
String HistLine = String.Join(",", histList.ToArray());
foo.ToArray().Aggregate((a, b) => (a + "," + b)).ToString()

또는

string.Concat(foo.ToArray().Select(a => a += ",").ToArray())

업데이트 중입니다. 매우 오래되었기 때문입니다.물론 끈을 사용해야 합니다.지금 가입하세요.작성 당시 옵션으로 존재하지 않았습니다.

지금까지 저는 이것이 좋고 빠른 해결책이라는 것을 알았습니다.

//CPID[] is the array
string cps = "";
if (CPID.Length > 0)
{   
    foreach (var item in CPID)
    {
        cps += item.Trim() + ",";
    }
}
//Use the string cps

내가 좋아하는 답은 쉼표가 잘못된 방식으로 CSV 이름 목록을 다음과 같이 만드는 것이었습니다.

Rob ,Steve ,Ben

대신 다음과 같은 것이 필요합니다.

Rob, Steve, Ben

따라서 최신 제품을 사용하여 약간의 변경만 필요합니다.VS/C# 2022:

ArrayList names = new ArrayList();

names.Add("Rob");
names.Add("Steve");
names.Add("Ben");

string namelist = String.Join(", ", names.ToArray());

Console.WriteLine(namelist);

언급URL : https://stackoverflow.com/questions/213295/how-do-i-create-a-comma-delimited-string-from-an-arraylist

반응형