나는 블루투스를 통해 전송되는 데이터를 구독하고 파싱 한 다음 최종 정보를 출력 json으로 반환하는 함수를 작성하고 있습니다.메시지를 구문 분석하고 json을 반환하는 클리너 솔루션
내 메시지 형식은 '헤더', 'ID', 'Ggid', 'Ppayload', 'Ttimestamp', 'AsigA', 'BsigB'입니다. 이 형식에서는 각 세그먼트 사이에 공백이 없으며 하나의 쉼표가 있습니다. 이 형식에서는 ID와 헤더 만 필요합니다. 헤더는 정적이며 항상 'H'로 시작합니다. 다른 정보는 'Id'를 제외한 대문자로 시작됩니다. 예를 들어 Id 세그먼트는 12345678 일 수 있지만 페이로드 세그먼트는 P12345678입니다. 현재이 정보를 구문 분석하는 데 정말 복잡한 코드가 있습니다. , B67
var len = Message.length;
app.outputTagJson.Tag = {};
if (len >= 2)
{
app.outputTagJson.Tag.tagID = Message[1];
app.outputTagJson.Tag.isLost = "False";
if (len >= 3)
{
app.outputTagJson.Tag.groupID = Message[2].slice(1,Message[2].length);
if (len >= 4)
{
app.outputTagJson.Tag.payload = Message[3].slice(1,Message[3].length);
if (len >= 5)
{
app.outputTagJson.Tag.timeStamp = Message[4].slice(1,Message[4].length);
if (len >= 6)
{
app.outputTagJson.Tag.sigStrenthA = Message[5].slice(1,Message[5].length);
if (len >= 7)
{
app.outputTagJson.Tag.sigStrenthB = Message[6].slice(1,Message[6].length);
}
}
}
}
}
}
내가 자바 스크립트에서이 형식을 절단하는 일반적인 정규 표현식을 생각하고 H, 00198601, GLOCATE, P762, T1.50, A64,하지만 난 ':
예 메시지 문자열입니다 나는 그것에 익숙하지 않다. 그래서 정규식을 사용하지 않고 클리너 솔루션이 있습니까? 아니면 정규식을 사용해야하는 경우 어떻게 접근 할 수 있습니까? 코드를 기반으로
는
당신은 당신이 얻을 메시지의 샘플을 제공 할 수 있을까요? –
실제 입력 예와 예상 결과를 공유 할 수 있습니까? 공유 한 코드는 중간에서 어딘가에서 시작하는 것처럼 보입니다. 이미 문자열을 쉼표로 분리하고 작은 따옴표를 제거한 것 같습니다. 그것은 또한 ID를 제외한 모든 값의 첫 번째 문자를 제거하려는 것처럼 코드에서 보인다? – smarx
@smarx, 예, 이미 쉼표로 원래 문자열을 분할했습니다. 샘플 메시지를 바로 추가하겠습니다. –