정보실

웹학교

정보실

javascript 모든 JavaScript 개발자가 알아야 할 두 가지 문자열 메소드.

본문

최근에 클라이언트가 단일 날짜 및 날짜 범위를 기반으로 Mongo 데이터베이스를 쿼리 할 수 있는 엔드 포인트를 빌드해야 하는 프로젝트를 진행하고있었습니다.


https://dev.to/itz_giddy/two-string-methods-every-javascript-developer-should-know-10e3 


끝점을 테스트하는 동안 '"2019-08-02T00 : 00 : 00.000Z'"형식의 날짜를 얻었으므로 DB를 성공적으로 쿼리 하지 못했음을 알았습니다.

한편 나는 '2019-08-02'의 형식으로 필요했습니다. 그래서 날짜-시간 문자열에서 시간을 분리하고 문자열에서 큰 따옴표를 제거해야 했습니다.


관심이 있으시면 날짜 범위로 NoSQL 데이터베이스를 쿼리하는 방법에 대해 썼습니다.


내가 시도한 것 : 


나는 모든 존경 받는 개발자가 로드 블록을 쳤을 때 했던 일을 했다 : 나는 이 문제를 해결하기 위해 RegEx를 찾고 있는 Stack Overflow의 영역을 조사했다!


검색하는 동안 효과가 있었지만 이해가 되지 않는 많은 답변을 보았으므로 코드베이스에 추가하는 것이 편안하지 않았습니다. 

작동하지만 이해하지 못하는 코드 수정은 익숙하지 않은 연습입니다.


JavaScript 문자열의 split() 메서드를 사용한 답변을 발견했습니다. 궁금한 점이 생겨서 Google에서 String 객체를 검색했습니다. 

내가 찾은 모든 다른 방법에 대해 너무 많은 이야기로 귀찮게 하지는 않을 것입니다. 나는 내 도전을 해결 한 두 사람에게만 귀찮게 할 것입니다.


String.prototype.split() in action! 


M.D.N에 대한 빠른 검색에서는 split() 메소드를 다음과 같이 설명합니다. 

split() 메서드는 지정된 구분 기호 문자열의 각 인스턴스에서 문자열을 분리하여 문자열을 문자열 배열로 변환합니다.


당신은 "아, 영어로 제발 ..."이라고 생각할지도 모르지만 걱정할 필요는 없습니다. 대체 정의는 다음과 같습니다.


split 방법을 사용하면 원하는 Mama String을 더 작은 자식 문자열로 줄일 수 있으며 조건을 기반으로 이 분리를 수행합니다. 그런 다음 답변을 배열로 반환합니다.


이 상태를 구분 기호라고 합니다. 구분 기호에 대해 매우 중요한 점은 구분 기호가 문자열에 있어야 한다는 것입니다. 따라서 split 방법을 지시하고 다음과 같이 말합니다.


"안녕하세요. 데이터라는 Mama 문자열을 쉼표를 사용하여 더 작은 자식 문자열로 자르고 싶습니다."


let data = "data";

data = data.split(',');

console.log(data);

//Expected Result: ["data"];

"스플릿 씨, 내가 당신에게 전달한 문자열을 배열에 넣어서 고정 시켜서 나를 속일 수 있다고 생각하지 마십시오"라고 생각할 수도 있습니다. 너무 서두르지 마라. 여기에 일어난 일이 있다. split()에 Mama 문자열의 일부가 아닌 분리자를 사용하여 전달한 Mama 문자열에서 하위 문자열을 제공하도록 지시했습니다. 따라서 Mama 문자열은 자체를 보며 "쉼표가 없으므로 구분할 수 없습니다"와 같습니다.


그러나 구분 기호를 비슷한 값으로 조정하면 문자 "a"가 표시됩니다. 보자 :


let data = "data";

data = data.split('a');

console.log(data);

//Expected Result: ["d", "t", ""];   

아하! 문자 a가 발견되는 곳마다 작은 자식 줄이 생깁니다. 따라서 Mr. split()은 구분 기호를 가져 와서 구분 기호가 표시되는 곳마다 Mama 문자열이 잘리는 미니 검색 기준으로 사용합니다. 그런 다음 구분 기호를 건너 뛰고 그 후에도 아무것도 반환하므로 ""위 결과의 일부로 얻습니다.


그러나 여러 곳에서 분리를 원한다면 어떻게 해야 할까요? 


괜찮습니다. split()은 선택 가능한 limit 매개 변수를 제공하여 편리하게 사용할 수 있습니다. 그러나 한 가지 한계에 도달하면 split은 Mama 문자열 분리를 중지하고 지금까지 분리 된 것만 제공한다는 것입니다. 따라서 "데이터"문자열을 문자 "a"로 한 번만 더 이상 나누지 않기를 원한다고 가정하면 다음과 같이 됩니다.


let data = "data";

data = data.split('a', 1);

console.log(data);

//Expected Result: ["d"];   


그래도 날짜-시간 문제를 어떻게 해결합니까? 


당신이 기억한다면, 나는 ""2019-08-02T00 : 00 : 00.000Z "와 같은 날짜-시간 문자열을 가졌습니다. 내가 얻은 새로운 지식으로, 내가 얻은 날짜-시간의 타임 스탬프 부분을 제거할 수 있었습니다. 그래서 나는 이와 같은 것을 가질 것입니다 :


 let date = '"2019-08-02T00:00:00.000Z"';

    date = date.split('T', 1);

   console.log(date);

   //Expected result: ['"2019-08-02"]


이제 데이트가 있습니다! 그러나 큰 따옴표 문제는 어떻습니까? 어떻게 해결할 수 있습니까?


String.prototype.replace() to the rescue! 


다음은 replace()가 수행하는 것입니다. 첫 번째 매개 변수로 사용하려는 문자열과 두 번째 매개 변수로 소개하려는 문자열을 사용합니다. 따라서 다음과 같이 진행됩니다.


string.replace(/stringIHate/,'StringILove') 


두 개의 슬래시를 사용하여 원하는 문자열을 저장합니다. 또한 문자 i와 같은 항목을 추가하여 검색에서 대소 문자를 구분하지 않도록 지시하거나 g를 사용하여 검색이 전역에서, 즉 문자열에서 발견되는 곳이면 어디든 지정할 수 있습니다.


따라서 문제를 해결하기 위해 다음과 같이 사용합니다.


  let date = '"2019-08-02T00:00:00.000Z"';

    date = date.split('T', 1);

   console.log(date);

   //Expected result: ['"2019-08-02"]

  //REPLACE METHOD
   date = date[0].replace(/"/,"");

   console.log(date);

   //Expected result: "2019-08-02"


짜잔! 나는 마침내 내가 원하는 형태로 데이트를 한다. replace ()에게 반환 된 배열에서 내 문자열을 검색하고 큰 따옴표를 찾아 아무것도 아닌 것으로 바꾸도록 지시함으로써 그렇게 했습니다.


체인링 replace() 및 split() : 더 나은 방법입니다. 


효율성을 높이기 위해 문자열 메서드를 연결하여 작성해야 하는 코드 줄을 줄일 수 있습니다. 

또한 코드가 짧아지기 때문에 split 함수를 호출하기 전에 문자열에서 replace 함수를 먼저 호출하는 것이 좋습니다. 따라서 코드를 다음과 같이 요약 할 수 있습니다.


  let date = '"2019-08-02T00:00:00.000Z"';

   date = date.replace(/"/g, "").split('T',1);

  console.log(date);

 // Expected Result: ["2019-08-02"];

//This is shorter and more semantic than:
date = date.split('T',1)[0].replace(/"/g, "");

//You could do that however if you don't want the string to be returned as an array


결론 


도움이 되셨기를 바랍니다. 정규식에 도달하기 전에 문자열 관련 문제를 해결하기 위해 이해해야 하지만 작동하지는 않지만 JavaScript 문자열 방법을 자세히 살펴보십시오.



  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

페이지 정보

조회 9회 ]  작성일19-11-30 23:46

웹학교