🗃️javascript/프로그래머스

문자열안에 문자열(Lv.0)(includes와 indexOf 사용해보기)

하얀성 2022. 12. 29. 14:11

 

<문제 설명>

 

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.


제한사항
  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100

입출력 예str1str2result
"ab6CDE443fgh22iJKlmn1o" "6CD" 1
"ppprrrogrammers" "pppp" 2

입출력 예 설명

입출력 예 #1

  • "ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.

입출력 예 #2

  • "ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.

<제출 답안>

 

처음에 indexOf(포함단어) 로 시도 했다가.. 이 함수는 그 함수가 시작하는 곳을 출력해서 이 문제에서 응요하기 힘들었음.

문자열 찾아주면 boolean으로 값을 내는 함수가 필요했음.

includes()가 그 기능을 수행하는 함수.

 

function solution(str1, str2) {
  
    return str1.includes(str2)? 1 : 2
}

 

근데 indexOf도 사용가능했다..

function solution(str1, str2) {
    return str1.indexOf(str2) === -1 ? 2 : 1;
}

나는 늘 쓰듯이 === 1 로 구별해는데.. 이렇게 하면되는 것이었다.

그런데 이것은 indexOf 함수를 잘 활용한 답안이 아니다. 그저 두가지 사례만으로 하는 거라 생각함.

그래서 내 방식을 추천.

 


<참고자료>

 

배열.indexOf(찾을 것), 배열.lastIndexOf(찾을 것)

문자열처럼 배열에서 찾습니다. 여러 개가 있더라도 처음으로 찾은 위치만을 알려줍니다. lastIndexOf는 뒤에서부터 찾습니다.

 

출처: https://www.zerocho.com/category/JavaScript/post/57387a9f715202c8679b3af0


배열.includes(찾을 내용)

자바스크립트에서 includes(), 정규 표현식을 이용하여 문자열에 어떤 문자 또는 문자열이 포함되어있는지 확인할 수 있습니다. 예제와 함께 함수 사용 방법을 알아보겠습니다.

1. includes() : 문자열 포함 여부를 Boolean으로 리턴

includes(String)는 문자열 안에서 인자로 전달된 문자열이 있다면 true를 리턴하고, 그렇지 않다면 false를 리턴합니다. includes()도 대소문자를 구분하여 문자열을 찾습니다. 단순히 문자열 포함 여부만 확인할 때는 indexOf()보다는 includes()를 사용하시는 것이 가독성이 좋습니다.

const str = 'Hello, World, Javascript';

console.log('1: ' + str.includes('Hello'));
console.log('2: ' + str.includes('hello'));
console.log('3: ' + str.includes(','));
console.log('4: ' + str.includes('World'));
console.log('5: ' + str.includes('Java'));

Output:

1: true
2: false
3: true
4: true
5: true

2. test() : 정규 표현식으로 문자열 포함 여부 확인, Boolean으로 리턴

test(String)는 인자로 전달된 문자열에서 정규표현식에 해당하는 문자열이 있다면 true를 리턴, 그렇지 않다면 false를 리턴합니다. includes()와 동일하지만 대신 정규표현식으로 문자열을 찾는다고 생각하시면 됩니다.

regex = /[a-zA-Z]{5},/;

console.log('1: ' + regex.test('Hello,'));
console.log('2: ' + regex.test('hello,'));
console.log('3: ' + regex.test('HELLO,'));
console.log('4: ' + regex.test('HELLO!!'));

Output:

1: true
2: true
3: true
4: false

3. match() : 정규 표현식으로 문자열 찾기

match(Regex)는 문자열에서 인자로 전달된 정규표현식에 해당하는 문자열을 찾습니다. 정규표현식은 대략 /pattern/flags 형태로 입력하는데, 아래 예제에서 flags에 해당 하는 g는 일치하는 모든 문자열을 찾으라는 의미입니다. 결과를 보면 일치하는 2개의 문자열이 모두 리턴되었습니다. [a-zA-Z]{5}, 패턴을 간단히 설명하면 대소문자를 구분하지 않는 알파벳이 5개 있고 마지막에 ,로 끝나는 문자열을 의미합니다.

const str = 'Hello, World, Javascript';
regex = /[a-zA-Z]{5},/g;

result = str.match(regex);

console.log(result);
console.log('length: ' + result.length);
console.log('result[0]: ' + result[0]);
console.log('result[0]: ' + result[1]);

Output:

[ 'Hello,', 'World,' ]
length: 2
result[0]: Hello,
result[0]: World,

출처: https://codechacha.com/ko/javascript-check-if-includes-string/

 

JavaScript - 특정 문자열의 포함 여부 확인 (includes, 정규표현식)

includes()는 문자열이 포함되어있으면 true를 리턴합니다. 포함 여부만 확인할 때는 indexOf()보다 includes()를 사용하는 것이 가독성이 좋습니다. 또한 test()나 match()를 이용하여 정규 표현식의 패턴으

codechacha.com