Sapphire9 개발 일지

생각해보기

문자열 양 끝의 공백과 문자열 사이 여러 개의 공백을 고려해야 한다.

또한 입력 문자열이 공백일 경우에 대한 예외 처리가 필요하다.

 

풀이)

// Run by Node.js

const readline = require("readline");
const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout
});

let str;

function wordsCount (str) {
	const words = str.trim().replace(/ +/g, ' '); // +는 1개 이상의 문자 패턴, 글로벌(g)
	if (words.length == 0)
		return console.log('0');
	wordList = words.split(' ');
	console.log(wordList.length);
}

rl.on("line", function(line) {
	str = line
	rl.close();
}).on("close", function() {
	wordsCount(str);
	process.exit();
});

String.prototype.trim()

trim() 메서드는 문자열 양 끝의 공백을 제거하고 원본 문자열을 수정하지 않고 새로운 문자열을 반환한다.

여기서 말하는 공백이란 모든 공백문자(space, tab, NBSP 등)와 모든 개행문자(LF, CR 등)을 의미한다.

 

String.prototype.replace()

replace() 메서드는 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환한다.

패턴은 문자열이나 정규식(RegExp)이 될 수 있으며, 교체 문자열은 문자열이나 모든 매치에 대해서 호출된 함수일 수 있다.

pattern이 문자열인 경우, 첫 번째 문자열만 치환이 되며 원래 문자열은 변경되지 않는다.

 

정규표현식은 /pattern/flag처럼 패턴과 플래그로 구성된다. 또한 찾으려는 문자열에 따옴표를 입력하지 않는다.

profile

Sapphire9 개발 일지

@Sapphire9

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그