2016-09-14 4 views
0

두 번 이상 발생하면 주어진 문자를 제거하고 싶습니다. 문자열에서 특정 char 대체하는 방법

var input = "12313*12313*13"; 
 
var count = (input.match(/[*]/g) || []).length; 
 

 
if (count > 1) 
 
{ 
 
    x = 0; 
 
    for (var i = 0, len = input.length; i < len; i++) { 
 
    if (input[i] == '*') 
 
    { 
 
     if (x == 0) 
 
     { 
 
     x++; 
 
     continue; 
 
     } 
 
     input[i] = ''; 
 
    } 
 
    } 
 
} 
 

 
console.log(input);

주어진 문자가 *이고 내가 문자열에서 * 다른 사람을 제거 할 것

.

이 출력은 12313*1231313입니다.

+0

당신은'input [i] = '''로하려고하는 것처럼 문자열을 돌연변이시킬 수 없습니다. –

답변

2

간단한 해결책은 lastIndexOfsubstring를 사용하여 :

var input = "12313*12313*13"; 
 
var count = (input.match(/[*]/g) || []).length; 
 

 
if (count > 1) { 
 
    var i = input.lastIndexOf('*'); 
 
    input = input.substring(0, i) + input.substring(i + 1); 
 
} 
 

 
console.log(input);

이것은 N의 발생과 함께 작동 이전의 리팩토링이다 :

이 솔루션은 단지이 명 발생 작동

var input = "12313*12313*13*12*13232*12312"; 
 
var count = (input.match(/[*]/g) || []).length; 
 
var i; 
 

 
while(count > 1) { 
 
    i = input.lastIndexOf('*'); 
 
    input = input.substring(0, i) + input.substring(i + 1); 
 
    count--; 
 
} 
 

 
console.log(input);

+1

이것은 단지 하나의 별표를 제거합니다. –

+0

@ 토라자부로 내가 원하는 걸 –

+0

@ 토라자부로 당신 말이 맞아요, 그 질문은 충분히 명확하지 않아서 그가 무엇이 필요한지 잘 모르겠습니다. 어쨌든 모든 경우를 제거하기 위해 리팩토링 된 버전을 추가했습니다. 감사! – ianaya89

관련 문제