본문 바로가기
개인공부/JavaScript

String Method 로 간단한 함수 만들기

by 왕큰새 2020. 8. 7.
728x90
var lengthFunc = function() {
    var input = prompt("입력");
    alert(input.length);
}

메서드는 아니고, String의 length 속성을 이용해, 입력한 문장의 단어 개수 출력하는 함수

 

var prequenFunc = function(){
    let input = prompt("단어 개수를 셀 문장 입력");
    let prequen = input.split(' ');
    alert(prequen.length);
}

문장을 입력하면, 단어가 몇 개로 이루어져 있는지에 대한 함수를 string의 split 메서드를 사용해 

세보기 , 발전한다면 객체를 이용, python에서 했던 단어 빈도 개수 세기랑 동일하게 작성한다면 동일한 기능을 할 것이다.

 

 

var ChangeWordFunc = function(){
    let string = prompt("단어를 변경할 문장 입력");
    let findWord = prompt("찾을 단어 입력");
    let ChangeWord = prompt("변경할 단어 입력");

    afterString = string.replace(findWord,ChangeWord);
    alert("변경 전 : "+ string +"\n" + "변경 후"  + afterString);
}

이 코드를 잘보면, afterString이라고 하는 변수를 하나가 있는데 var를 적어주지 않고 함수를 작성했으나

실행이 되었다. 그래서 왜 실행이 되었는지 찾아보니, var를 쓰지 않으면 상위 스코프를 계속 탐색하면서 이 변수가 선언이 되어있는지 선언이 돼있지 않은지 탐색한 후, 선언이 되어있지 않다면 자동으로 글로벌 변수로 선언한다고 한다.

어쨌든, 이 함수는 Word 문서에서 단어 바꾸기 기능을 모방해보려고 한 것이다.

예를 들어, 

abcdfaaa 가 있을 때, 찾으려는 문자가 a 바꾸려는 문자가 b 라면,

bbcdfbbb 가 예상되는 결과 값일 것이다. 하지만, 실행을 시켜보면 bbcdfaaa로 결과 값이 나온다.

JavaScript에서의 replace는 가장 앞쪽의 문자만 바꿔주는 것 같다. 그래서 Java의 ReplaceAll을 생각하고 ,

메서드를 사용하려 하니, 메서드가 없어 검색해서 찾아낸 것이 두 가지였다. 

 

1. 정규식 사용

정규식 사용으로 만들어보려 했으나, 변수를 포함한 정규식은 입력이 안 되는 것인지, 내가 못 찾는 것인지 

되지를 않아서 replaceAll 메소드를 만들어 사용했다.

 

2. replaceAll을 만들어 사용

var replaceAll = function(str,oldStr,newStr) {
    return str.split(oldStr).join(newStr);
}

oldStr, 즉 찾으려는 문자를 기준으로 잘라서 배열로  만들고, 그 배열 사이에 newStr 즉, 바꾸려는 문자를 이어 붙이는 것이다. 

 

var ChangeWordFunc = function(){
    let string = prompt("단어를 변경할 문장 입력");
    let findWord = prompt("찾을 단어 입력");
    let ChangeWord = prompt("변경할 단어 입력");
    let afterString = replaceAll(string,findWord,ChangeWord);
    alert("변경 전 : "+ string +"\n" + "변경 후 : "  + afterString);
}​

작성한 함수는 이렇게 되어 있다. 아주 잘 작동한다. String method를 이용해 간단하게 함수를 작성해 보았다.

'개인공부 > JavaScript' 카테고리의 다른 글

Document 객체  (0) 2020.08.11
Window 객체  (0) 2020.08.11
스코프, 스코프 체인, outerEnvironmentReference  (0) 2020.08.03
함수 선언문과 함수 표현식  (0) 2020.08.03
hoisting(호이스팅)  (0) 2020.08.03