웹상에서 입력받거나 파라미터로 받은 문자열의 특정부분을 다른 문자로 치환해 보기로 했다.

조건은..

1) 반복문을 쓰지 않고,

2) 입력된 총 문자열의 뒤에서 3번째 부터 마지막까지,

3) 치환될 문자는 라디오 버튼으로 입력받거나 고정으로 주어진다 .

 

다른 좋은 방법도 많고 쓸일이 있을까 싶지만, 재미니까..

 

 

1. HTML

 

<div>
  <input type=text id=in value='' /><br/>
  @<input type=radio id=rin value='@' /> |
  $<input type=radio id=rin value='$' /> |
  *<input type=radio id=rin value='*' /><br/>
</div>

 

<button onclick='test()'>입 력</button>

 

 

2. SCRIPT

 

function repl0(a, b, c){ // 치환할 문자를 입력받는 경우.
  var num = a.length;

  if(num > c){
    // alert(a.substring((num - num) + c + " | " + (((num + 1) - num) + c)));
    var mun = a.replace(a.substring((num - num) + c, (((num + 1) - num) + c)), b);
    // alert("mun : " + mun + ", c : " + c);
    c++;
    return repl0(mun, b, c);
  }
  return a;
}

 

function repl1(a, b){  // 치환할 문자가 정해진 경우.
  if(a.length > b.length){
    b = b + "*"; // 치환될 문자가 '*'로 고정.
    return repl1(a, b);
  }
  return b;
}

 

function test(){
  var p = /[a-zA-Z0-9]/; // 처음에는 substring과 패턴을 이용해서 만들어볼까 하다가 중간에 일이 있어서.. 다음으로..

  var mun = document.getElementById("in").value;
  var spm = document.getElementById("rin").value;
  var a = mun.length;
  var a1 = mun.substring(0, a - 3);
  var a2 = mun.substring(a - 3, a);
  var rep = repl0(a2, spm, 0);
 

  alert(a1 + rep);
  alert(a1 + repl1(a2, ""));
}

 

 

3-1. RUN

 

치환될 문자를 선택하는 경우.

 

 

 

3-2. RUN

 

치환될 문자가 고정된 경우.