JavaScript에서 부분 문자열 찾기와 추출. indexOf()와 substring()을 결합하여 특정 문자열을 찾고 추출하는 방법.
JavaScript에서 부분 문자열 찾기와 추출: indexOf()와 substring()을 결합하여 특정 문자열을 찾고 추출하는 방법
JavaScript는 문자열을 조작하고 처리하는 데 유용한 다양한 메서드를 제공합니다. 특히 부분 문자열을 찾고 추출하는 작업은 웹 개발에서 자주 필요합니다. 이 글에서는 indexOf()와 substring() 메서드를 결합하여 특정 문자열을 찾고 추출하는 방법을 다룹니다. indexOf() 메서드는 문자열 내에서 특정 텍스트를 검색할 때 유용하며, substring() 메서드는 문자열의 일부를 추출하는 데 사용됩니다. 두 메서드를 함께 사용하여 강력한 문자열 처리 기능을 구현할 수 있습니다.
indexOf() 메서드
indexOf() 메서드는 문자열 내에서 특정 텍스트를 찾아 그 위치를 반환합니다. 찾고자 하는 텍스트가 존재하지 않으면 -1을 반환합니다.
기본 문법
javascriptstring.indexOf(searchValue, fromIndex);
- searchValue: 검색할 문자열.
- fromIndex (선택 사항): 검색을 시작할 위치. 기본값은 0입니다.
사용 예제
javascriptlet str = "Hello, world!"; let position = str.indexOf("world"); console.log(position); // 7 position = str.indexOf("world", 8); console.log(position); // -1 (검색 시작 위치 이후에 "world"가 존재하지 않음)
substring() 메서드
substring() 메서드는 문자열의 일부를 추출하여 새로운 문자열을 반환합니다. 두 개의 인덱스를 사용하여 추출할 부분의 시작과 끝을 지정합니다.
기본 문법
javascriptstring.substring(indexStart, indexEnd);
- indexStart: 추출을 시작할 인덱스. 이 인덱스는 포함됩니다.
- indexEnd (선택 사항): 추출을 끝낼 인덱스. 이 인덱스는 포함되지 않습니다. 지정하지 않으면 문자열의 끝까지 추출합니다.
사용 예제
javascriptlet str = "Hello, world!"; let result = str.substring(7, 12); console.log(result); // "world"
indexOf()와 substring()을 결합하여 문자열 찾기와 추출하기
이제 indexOf()와 substring()을 결합하여 문자열 내에서 특정 부분 문자열을 찾고 추출하는 방법을 살펴보겠습니다.
예제: 문자열에서 도메인 추출하기
다음은 URL에서 도메인 부분을 추출하는 예제입니다.
javascriptlet url = "https://www.example.com/path?query=123"; let start = url.indexOf("//") + 2; // 2를 더해 "://"를 건너뜁니다. let end = url.indexOf("/", start); let domain = url.substring(start, end); console.log(domain); // "www.example.com"
이 예제에서 indexOf("//")를 사용하여 //의 위치를 찾고, 도메인의 시작 위치를 계산합니다. 이후 indexOf("/", start)를 사용하여 도메인의 끝 위치를 찾고, substring()을 사용하여 도메인을 추출합니다.
예제: 텍스트에서 특정 단어 추출하기
사용자 입력에서 특정 단어를 추출하는 것도 자주 필요한 작업입니다.
javascriptlet text = "Please find the keyword in this sentence."; let keyword = "keyword"; let start = text.indexOf(keyword); if (start !== -1) { let end = start + keyword.length; let extractedKeyword = text.substring(start, end); console.log(extractedKeyword); // "keyword" } else { console.log("Keyword not found."); }
이 예제에서는 indexOf(keyword)를 사용하여 키워드의 시작 위치를 찾고, substring()을 사용하여 키워드를 추출합니다. start가 -1이 아닌 경우에만 추출을 수행하여 키워드가 존재하는지 확인합니다.
예제: HTML 태그 추출하기
HTML 문자열에서 특정 태그를 추출하는 예제도 살펴보겠습니다.
javascriptlet html = "<div>Hello, <span>world</span>!</div>"; let tag = "span"; let startTag = <${tag}>; let endTag = </${tag}>; let start = html.indexOf(startTag); let end = html.indexOf(endTag, start); if (start !== -1 && end !== -1) { start += startTag.length; // 태그 길이를 더해 실제 내용의 시작 위치를 계산합니다. let content = html.substring(start, end); console.log(content); // "world" } else { console.log(${tag} tag not found.); }
이 예제에서는 indexOf(startTag)와 indexOf(endTag, start)를 사용하여 시작 태그와 종료 태그의 위치를 찾고, substring()을 사용하여 태그 사이의 내용을 추출합니다.
다양한 사용 사례
indexOf()와 substring()을 결합하여 다양한 문자열 처리 작업을 수행할 수 있습니다. 몇 가지 추가적인 사용 사례를 살펴보겠습니다.
이메일 주소에서 도메인 추출
이메일 주소에서 도메인 부분을 추출하는 예제입니다.
javascriptlet email = "user@example.com"; let atIndex = email.indexOf("@"); if (atIndex !== -1) { let domain = email.substring(atIndex + 1); console.log(domain); // "example.com" } else { console.log("Invalid email address."); }
이 예제에서는 indexOf("@")를 사용하여 @의 위치를 찾고, substring(atIndex + 1)을 사용하여 도메인을 추출합니다.
텍스트에서 첫 번째 문장 추출
텍스트에서 첫 번째 문장을 추출하는 예제입니다.
javascriptlet paragraph = "This is the first sentence. Here is the second sentence."; let periodIndex = paragraph.indexOf("."); if (periodIndex !== -1) { let firstSentence = paragraph.substring(0, periodIndex + 1); console.log(firstSentence); // "This is the first sentence." } else { console.log("No sentence found."); }
이 예제에서는 indexOf(".")를 사용하여 첫 번째 마침표의 위치를 찾고, substring(0, periodIndex + 1)을 사용하여 첫 번째 문장을 추출합니다.
결론
JavaScript에서 부분 문자열을 찾고 추출하는 작업은 indexOf()와 substring() 메서드를 결합하여 쉽게 수행할 수 있습니다. indexOf() 메서드는 문자열 내에서 특정 텍스트를 검색하는 데 사용되며, substring() 메서드는 문자열의 일부를 추출하는 데 사용됩니다. 이 두 메서드를 함께 사용하면 문자열 처리 작업을 효율적으로 수행할 수 있습니다.
다양한 예제를 통해 indexOf()와 substring() 메서드의 사용 방법과 실전 활용 사례를 살펴보았습니다. 이러한 기법을 활용하여 웹 개발 등 다양한 분야에서 문자열 처리 작업을 더욱 능숙하게 다룰 수 있게 되기를 바랍니다.