다음과 같은 문자열이 있습니다.
"2014-01-23 09:13:45|\"10002112|TR0859657|25-DEC-2013>0000000000000001\"|10002112"
큰 따옴표로 묶인 것과는 별개로 파이프로 나누고 싶습니다 (csv가 수행되는 방식과 유사).
[0] => 2014-01-23 09:13:45
[1] => 10002112|TR0859657|25-DEC-2013>0000000000000001
[2] => 10002112
이것을 할 수있는 정규 표현식이 있는지 알고 싶습니다.
자신의 파서를 작성해야 할 수도 있다고 생각합니다.
다음이 필요합니다.
결과를 유지하는 맞춤 컬렉션
파이프가 따옴표 안에 있는지 아니면 바깥에 있는지를 결정하는 부울 플래그
현재 단어를 유지하기위한 문자열 (또는 StringBuilder)
아이디어는 char로 문자열 char을 읽는 것입니다. 각 문자는 단어에 추가됩니다. 따옴표 밖에 파이프가 있으면 결과 컬렉션에 단어를 추가합니다. 따옴표가 있으면 플래그를 전환하여 파이프를 더 이상 구분선으로 처리하지 않고 단어의 일부로 추가합니다. 그런 다음 다른 견적이 있으면 플래그를 다시 전환합니다. 따라서 다음 파이프는 컬렉션에 전체 단어 (따옴표 안에 파이프 포함)를 추가합니다. 귀하의 예제에서 아래 코드를 테스트했으며 작동했습니다.
private static List<string> ParseLine(string yourString)
{
bool ignorePipe = false;
string word = string.Empty;
List<string> divided = new List<string>();
foreach (char c in yourString)
{
if (c == '|' &&
!ignorePipe)
{
divided.Add(word);
word = string.Empty;
}
else if (c == '"')
{
ignorePipe = !ignorePipe;
}
else
{
word += c;
}
}
divided.Add(word);
return divided;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다