반응형
쉼표로 구분 된 문자열을 어떤 종류의 객체로 구문 분석하는 가장 쉬운 방법은 개별 값에 액세스하기 위해 반복 할 수 있습니까?
개별 값에 쉽게 액세스 할 수 있도록 쉼표로 구분 된 문자열 값 목록을 반복 할 수있는 일종의 개체로 구문 분석하는 가장 쉬운 방법은 무엇입니까?
예제 문자열 : "0, 10, 20, 30, 100, 200"
저는 C #에 익숙하지 않으므로 이와 같은 간단한 질문을 해주셔서 용서해주십시오. 감사.
이것에 문제가 있지만 궁극적으로 가장 간단한 방법은
string s = [yourlongstring];
string[] values = s.Split(',');
쉼표와 항목의 수가 중요하지 않고 '빈'값을 제거하려면 다음을 사용할 수 있습니다.
string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
하지만 한 가지-이것은 문자열 앞뒤에 공백을 유지합니다. 이 문제를 해결하기 위해 약간의 Linq 마법을 사용할 수 있습니다.
string[] values = s.Split(',').Select(sValue => sValue.Trim()).ToArray();
.Net 3.5를 사용하고 있고 소스 파일 상단에 using System.Linq 선언이있는 경우입니다.
var stringToSplit = "0, 10, 20, 30, 100, 200";
// To parse your string
var elements = test.Split(new[]
{ ',' }, System.StringSplitOptions.RemoveEmptyEntries);
// To Loop through
foreach (string items in elements)
{
// enjoy
}
Linq를 사용하면 매우 빠르고 쉬운 방법입니다.
string mystring = "0, 10, 20, 30, 100, 200";
var query = from val in mystring.Split(',')
select int.Parse(val);
foreach (int num in query)
{
Console.WriteLine(num);
}
패턴은 숫자가 아닌 모든 문자와 일치합니다. 이것은 당신을 음이 아닌 정수로 제한하지만 귀하의 예에서는 충분합니다.
string input = "0, 10, 20, 30, 100, 200";
Regex.Split(input, @"\D+");
쉼표로 구분 된 값 텍스트 파일로 작업하는 경우 Microsoft.VisualBasic.FileIO.TextFieldParser 클래스 를 사용하는 것이 더 낫다고 생각 합니다.
다음과 같이 열 자체에 쉼표가있는 경우도 있습니다.
"일부 항목", "다른 항목", "또한 하나 더 항목"
이 경우 ","로 분할하면 일부 열이 손상됩니다. 더 쉬운 방법 일 수도 있지만, 방금 내 자신의 메서드를 만들었습니다 (보너스로 쉼표 뒤의 공백을 처리하고 IList를 반환합니다).
private IList<string> GetColumns(string columns)
{
IList<string> list = new List<string>();
if (!string.IsNullOrWhiteSpace(columns))
{
if (columns[0] != '\"')
{
// treat as just one item
list.Add(columns);
}
else
{
bool gettingItemName = true;
bool justChanged = false;
string itemName = string.Empty;
for (int index = 1; index < columns.Length; index++)
{
justChanged = false;
if (subIndustries[index] == '\"')
{
gettingItemName = !gettingItemName;
justChanged = true;
}
if ((gettingItemName == false) &&
(justChanged == true))
{
list.Add(itemName);
itemName = string.Empty;
justChanged = false;
}
if ((gettingItemName == true) && (justChanged == false))
{
itemName += columns[index];
}
}
}
}
return list;
}
반응형
'IT TIP' 카테고리의 다른 글
rbenv install --list에 버전 2.1.2가 나열되지 않음 (0) | 2020.12.13 |
---|---|
폴더를 마우스 오른쪽 단추로 클릭 한 후 Visual Studio 코드 "코드로 열기"가 나타나지 않음 (0) | 2020.12.13 |
ReSharper의 비즈니스 사례 (0) | 2020.12.13 |
자바 스크립트 기능으로 onclick 액션 변경 (0) | 2020.12.13 |
Java에서 버전 문자열을 비교하는 효율적인 방법 (0) | 2020.12.13 |