string. 목록에 참여 또는 다른 유형
배열 또는 정수 목록을 다음과 같이 쉼표로 구분 된 문자열로 바꾸고 싶습니다.
string myFunction(List<int> a) {
return string.Join(",", a);
}
그러나 string.Join List<string>
은 두 번째 매개 변수 로만 사용됩니다 . 이를 수행하는 가장 좋은 방법은 무엇입니까?
가장 좋은 방법은 원하는 작업을 수행하는 오버로드가있는 .NET 4.0으로 업그레이드하는 것입니다.
업그레이드 할 수없는 경우 Select 및 ToArray를 사용하여 동일한 효과를 얻을 수 있습니다.
return string.Join(",", a.Select(x => x.ToString()).ToArray());
.NET 3.5 용 일반 열거 가능한 문자열 조인 의 확장 가능 하고 안전한 구현입니다. 반복자의 사용법은 조인 문자열 값이 문자열 끝에 고정되지 않도록하는 것입니다. 0, 1 및 더 많은 요소에서 올바르게 작동합니다.
public static class StringExtensions
{
public static string Join<T>(this string joinWith, IEnumerable<T> list)
{
if (list == null)
throw new ArgumentNullException("list");
if (joinWith == null)
throw new ArgumentNullException("joinWith");
var stringBuilder = new StringBuilder();
var enumerator = list.GetEnumerator();
if (!enumerator.MoveNext())
return string.Empty;
while (true)
{
stringBuilder.Append(enumerator.Current);
if (!enumerator.MoveNext())
break;
stringBuilder.Append(joinWith);
}
return stringBuilder.ToString();
}
}
용법:
var arrayOfInts = new[] { 1, 2, 3, 4 };
Console.WriteLine(",".Join(arrayOfInts));
var listOfInts = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(",".Join(listOfInts));
즐겨!
.NET 2.0 :
static string IntListToDelimitedString(List<int> intList, char Delimiter)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < intList.Count; i++)
{
builder.Append(intList[i].ToString());
if (i != intList.Count - 1)
builder.Append(Delimiter);
}
return builder.ToString();
}
이 대답은 아직 .NET 4.0의 깊이에 도전하고 싶지 않은 경우에 적합합니다.
String.Join ()은 각 요소 사이에 지정된 구분 기호를 사용하여 문자열 배열의 모든 요소를 연결합니다.
구문은
public static string Join(
string separator,
params string[] value
)
Int 목록을 Join 메서드에 전달하는 대신 먼저 문자열 배열을 구축하는 것이 좋습니다.
내가 제안하는 것은 다음과 같습니다.
static string myFunction(List<int> a) {
int[] intArray = a.ToArray();
string[] stringArray = new string[intArray.Length];
for (int i = 0; i < intArray.Length; i++)
{
stringArray[i] = intArray[i].ToString();
}
return string.Join(",", stringArray);
}
내가 이것으로 수정 한 유사한 확장 방법이 있었다
public static class MyExtensions
{
public static string Join(this List<int> a, string splitChar)
{
return string.Join(splitChar, a.Select(n => n.ToString()).ToArray());
}
}
그리고 당신은 이것을 이렇게 사용합니다
var test = new List<int>() { 1, 2, 3, 4, 5 };
string s = test.Join(",");
.NET 3.5
.NET 4.0 사용
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string s = myFunction(PopulateTestList());
this.TextBox1.Text = s;
}
protected List<int> PopulateTestList()
{
List<int> thisList = new List<int>();
thisList.Add(22);
thisList.Add(33);
thisList.Add(44);
return thisList;
}
protected string myFunction(List<int> a)
{
return string.Join(",", a);
}
}
.NET에서 목록 클래스에는 .ToArray()
메서드가 있습니다. 다음과 같이 작동 할 수 있습니다.
string myFunction(List<int> a)
{
return string.Join(",", a.ToArray());
}
참조 : List <T> 메서드 (MSDN)
참고 URL : https://stackoverflow.com/questions/3610431/string-join-on-a-listint-or-other-type
'Programing' 카테고리의 다른 글
.gitignore에서 부정 패턴은 어떻게 작동합니까? (0) | 2020.10.19 |
---|---|
Oracle SQL에서 작은 따옴표를 처리하는 방법 (0) | 2020.10.19 |
matplotlib에서 플롯의 축, 눈금 및 레이블 색상 변경 (0) | 2020.10.19 |
반복되는 React 요소를 어떻게 렌더링 할 수 있습니까? (0) | 2020.10.19 |
Android 머티리얼 디자인 문서에서 하단 시트를 구현하는 방법 (0) | 2020.10.19 |