자바 스크립트를 사용하여 한 자리 또는 두 자리 문자를 기반으로 부분 문자열 추출

zaq

이것은 이전에 묻는 질문을 기반으로 한 새로운 질문 입니다. 구분 기호를 기반으로 문자열에서 부분 문자열 추출 (답변 허용)

나는 끈이있다 ]d1[)½}06~9N110375286414~1T12345ABCD~D150600~S12345ABCDEF98765}

참고 : }위의 예에서 뒤에 공백이 있습니다.

위의 문자열에서 내 구분 기호는 9N, 1T, D, S이며 구분 기호 뒤에있는 부분 문자열을 추출 ~하거나 EOL이 될 때까지 추출해야합니다 .

그 아래에있는 바이올린이 기대에 D1S1대신 구분 기호로 DS각각.

나는 2 개의 문제에 직면하고있다

1) 단일 문자 구분 기호 문제 ( D, S)

2) }값을 반환 할 때 문자열 끝을 어떻게 제거해야합니까 ? 예를 들어 구분 기호 S있는 하위 문자열 12345ABCDEF9876512345ABCDEF98765}

Fiddle (결과는 콘솔 기반)

JS

// Use ]d1[)½}06~9N110375286414~1T12345ABCD~D150600~S12345ABCDEF98765} 
// Note: There is an empty space after the } char as shown above

var dataNames = {
  '9N': 'PPN',
  '1T': 'batchNumber',
  'D': 'expireDate',
  'S': 'serialNumber'
};

var input = document.querySelector("input");
document.querySelector("button").addEventListener("click", function() {
  var str = input.value;
  console.log(parseGS1(str));
});

function parseGS1(str) {
  var fnc1 = "~";
  var data = {};

  //remove ]d1[)½}06~
  str = str.slice(10);

  while (str.length) {
    //get the AI identifier: 1T, 9N etc
    let aiIdent = str.slice(0, 2);
    //get the name we want to use for the data object
    let dataName = dataNames[aiIdent];
    //update the string
    str = str.slice(2);

    switch (aiIdent) {
      case "1T":
      case "9N":
        let fnc1Index = str.indexOf(fnc1);
        //eol or fnc1 cases
        if (fnc1Index == -1) {
          data[dataName] = str.slice(0);
          str = "";
        } else {
          data[dataName] = str.slice(0, fnc1Index);
          str = str.slice(fnc1Index + 1);
        }
        break;
      case "D":
      case "S":

        //eol or fnc1 cases

        break;
      default:
        console.log("unexpected ident encountered:", aiIdent);
        return false;
        break;
    }
  }
  return data;
}
Thijs

정규식을 사용하여이 작업을 수행 할 수도 있습니다. 이 솔루션을 사용하면 문자열의 일부가 움직여도 작동합니다.

function getData(input) {
  input = input.slice(0, input.length - 2);
  // The regex has two capture groups. 
  // Group 1 gets the identifier, this can also be the start of the string.
  // Group 2 gets all the characters between the identifier and the '~' char or '} '.
  // The third group is a non-capturing group, it is used to find the delimiter where the next part starts.
  var
      regex = /(^|9N|1T|D|S)(.*?)(?:~|$)/g,
      data = {},
      match = regex.exec(input);

  while (match !== null) {
    switch(match[1]) {
    case '9N':
      data.PPN = match[2];
      break;
    case '1T':
      data.batch = match[2];  
      break;
    case 'D':
      data.expireDate = match[2];  
      break;
    case 'S':
      data.serial = match[2];  
      break;  
    }
    var msg = 'Found ' + match[0] + ' / identifier = ' + match[1]  +  ' / value = ' + match[2] + '. ';
    console.log(msg);

    // Get the next match.
    match = regex.exec(input);
  }
  return data;
}

var input = ']d1[)½}06~9N110375286414~1T12345ABCD~D150600~S12345ABCDEF98765} ',
    input2 = ']d1[)½}06~9N110375286414~D150600~1T12345ABCD~S12345ABCDEF98765} ';
console.log(getData(input));
console.log(getData(input2));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 스크립트를 사용하여 두 번째 구분 기호를 기반으로 문자열 분할

분류에서Dev

awk를 사용하여 문자열의 두 부분 추출

분류에서Dev

한 자리 또는 두 자리를 캡처하는 하위 문자열

분류에서Dev

자바 스크립트를 사용하여 구분 기호를 기반으로 문자열 분할

분류에서Dev

문자 또는 기호 앞의 한 자리 또는 두 자리 숫자를 추출하려면 Excel 공식이 필요합니다.

분류에서Dev

R의 스트링거를 사용하여 한 자리 숫자를 두 자리 숫자로 바꾸는 방법

분류에서Dev

문자열의 일부를 추출하는 스크립트

분류에서Dev

자바 스크립트를 사용하여 문자열을 단어와 구두점으로 구문 분석하는 방법

분류에서Dev

GNU awk 또는 awk를 사용하여 구분 기호 뒤의 부분 문자열 추출

분류에서Dev

텍스트를 같은 길이의 두 문자열로 분할하는 자바 스크립트 함수

분류에서Dev

Excel에서 캐리지 리턴 구분 기호를 사용하여 여러 부분 문자열 추출

분류에서Dev

자바 스크립트는 공백으로 자동 완성을 사용하여 동일한 부분으로 문자열을 분할합니다.

분류에서Dev

자바 스크립트를 사용하여 쿼리 문자열 보내기

분류에서Dev

자바 스크립트를 사용하여 문자열의 일부 얻기

분류에서Dev

VB.net Regex를 사용하여 문자열의 두 부분 추출

분류에서Dev

자바 스크립트를 사용하여 문자열에서 날짜를 추출하는 방법

분류에서Dev

JavaScript : Regex를 사용하여 두 개의 선택적 문자 사이에서 문자열 부분 추출

분류에서Dev

regEx는 match ()를 사용하여 자바 스크립트에서 문자열 배열을 추출합니다.

분류에서Dev

자바 스크립트를 사용하여 문자열에서 일부 문자 바꾸기

분류에서Dev

부분 문자열 자바 스크립트를 얻는 방법?

분류에서Dev

반복되는 부분 문자열 또는 두 문자열 간의 차이를 기반으로하는 NSString 압축

분류에서Dev

grep을 사용하여 두 부분 문자열 사이의 문자열 추출

분류에서Dev

Bash를 사용하여 동일한 길이의 두 부분 문자열로 문자열을 분할하는 방법은 무엇입니까?

분류에서Dev

Rails-문자열에서 [및]를 사용하여 부분 문자열 추출

분류에서Dev

HTML 태그를 사용하여 문자열에서 부분 문자열 추출

분류에서Dev

jquery를 사용하여 문자열에서 부분 문자열 추출

분류에서Dev

sed를 사용하여 문자열에서 부분 문자열 추출

분류에서Dev

문자열에서 한 자리 숫자 (1 또는 5B)를 두 자리 (01 또는 05B)로 바꿉니다.

분류에서Dev

VBA를 사용하여 두 개의 동일한 문자 사이의 문자열에서 텍스트 추출

Related 관련 기사

  1. 1

    자바 스크립트를 사용하여 두 번째 구분 기호를 기반으로 문자열 분할

  2. 2

    awk를 사용하여 문자열의 두 부분 추출

  3. 3

    한 자리 또는 두 자리를 캡처하는 하위 문자열

  4. 4

    자바 스크립트를 사용하여 구분 기호를 기반으로 문자열 분할

  5. 5

    문자 또는 기호 앞의 한 자리 또는 두 자리 숫자를 추출하려면 Excel 공식이 필요합니다.

  6. 6

    R의 스트링거를 사용하여 한 자리 숫자를 두 자리 숫자로 바꾸는 방법

  7. 7

    문자열의 일부를 추출하는 스크립트

  8. 8

    자바 스크립트를 사용하여 문자열을 단어와 구두점으로 구문 분석하는 방법

  9. 9

    GNU awk 또는 awk를 사용하여 구분 기호 뒤의 부분 문자열 추출

  10. 10

    텍스트를 같은 길이의 두 문자열로 분할하는 자바 스크립트 함수

  11. 11

    Excel에서 캐리지 리턴 구분 기호를 사용하여 여러 부분 문자열 추출

  12. 12

    자바 스크립트는 공백으로 자동 완성을 사용하여 동일한 부분으로 문자열을 분할합니다.

  13. 13

    자바 스크립트를 사용하여 쿼리 문자열 보내기

  14. 14

    자바 스크립트를 사용하여 문자열의 일부 얻기

  15. 15

    VB.net Regex를 사용하여 문자열의 두 부분 추출

  16. 16

    자바 스크립트를 사용하여 문자열에서 날짜를 추출하는 방법

  17. 17

    JavaScript : Regex를 사용하여 두 개의 선택적 문자 사이에서 문자열 부분 추출

  18. 18

    regEx는 match ()를 사용하여 자바 스크립트에서 문자열 배열을 추출합니다.

  19. 19

    자바 스크립트를 사용하여 문자열에서 일부 문자 바꾸기

  20. 20

    부분 문자열 자바 스크립트를 얻는 방법?

  21. 21

    반복되는 부분 문자열 또는 두 문자열 간의 차이를 기반으로하는 NSString 압축

  22. 22

    grep을 사용하여 두 부분 문자열 사이의 문자열 추출

  23. 23

    Bash를 사용하여 동일한 길이의 두 부분 문자열로 문자열을 분할하는 방법은 무엇입니까?

  24. 24

    Rails-문자열에서 [및]를 사용하여 부분 문자열 추출

  25. 25

    HTML 태그를 사용하여 문자열에서 부분 문자열 추출

  26. 26

    jquery를 사용하여 문자열에서 부분 문자열 추출

  27. 27

    sed를 사용하여 문자열에서 부분 문자열 추출

  28. 28

    문자열에서 한 자리 숫자 (1 또는 5B)를 두 자리 (01 또는 05B)로 바꿉니다.

  29. 29

    VBA를 사용하여 두 개의 동일한 문자 사이의 문자열에서 텍스트 추출

뜨겁다태그

보관