문자열을 json으로 변환 할수가 있나요?

안녕하세요.
문자열을 파싱해서 각각 S1~S4까지의 값을 가져오고싶은데, 어떻게 해야할지 문의 드립니다…
길이만큼 잘라서 쓰려고 해도, S1~S4의 데이터 길이가 유동적이라서 그건 안되겠고,
가장 확실한건 JSON으로 변환해서 추출하는 것으로 생각되는데… 선배님들의 조언 부탁드립니다.

string res = “S1=001;S2=D1;S3=999;S4=960”;

2개의 좋아요

"="과 ";"를 delimeter 삼아 처리할 수 있을 것 같습니다.

using System;
using System.Linq;
					
public class Program
{
	public static void Main()
	{
		string subject = "S1=001;S2=D1;S3=999;S4=960";
		var result = subject
						.Split(';')
						.Select(x => x.Split('='))
						.Select(x => (Key: x[0], Value: x[1]));
		foreach(var v in result)
		{
			Console.WriteLine($"Key = {v.Key}, Value = {v.Value}");	
		}
	}
}
3개의 좋아요

답변 감사드립니다!!
혹시 S4=960; 세미콜론까지 포함되어 있으면 오류가 범위를 벗어낫다는 에러가 나오더라구요,
이 경우엔 어떻게 수정을 해야할지 다시한번 문의드립니다…

1개의 좋아요

마지막에 세미콜론이 있는 경우 제거하는 메서드로 처리해 주시면 될것 같습니다.

string subject = “S1=001;S2=D1;S3=999;S4=960;”;
var result = subject.TrimEnd(‘;’)
.Split(‘;’)
.Select(x => x.Split(‘=’))
.Select(x => (Key: x[0], Value: x[1]));

4개의 좋아요

답변 감사드립니다
해결되었습니다.
즐거운 추석되세요^-^

1개의 좋아요

Split에 옵션을 줘서 빈항목을 제거하는 방법도 있습니다.

subject.Split(new char {‘;’}, StringSplitOptions.RemoveEmptyEntries)

형태로 사용해 가능합니다.

4개의 좋아요