2013-05-07 4 views
0

문자열에 문자열이 있으면 해당 부분을 찾아서 바꾸고 싶습니다. 나는이 문자열에서 1.png을 찾아 원하는 1.jpg로 존재하는 경우 다음을 교체자바 스크립트에서 문자열을 찾아 점으로 바꾸기

'1.png,2.png,3.jpg,4.gif'처럼

문자열입니다.

search()indexOf() 메서드를 사용하여 찾을 수 없습니다.

이후로 찾을 수 없으므로 교체 할 수 없습니다.

은 내가 조합을 다음 시도 이런 식으로

var str = '1.png' 
var new_str = '1.jpg' 
var main_str = '1.png,2.png,3.jpg,4.gif'; 

if(main_str.indexOf(str) > 0){ 
alert('found') 
// now replace it with new_str 
} 
else{ 
alert('not found') 
} 

을 시도하고 있지만이 작동하지 않습니다.

main_str.indexOf('str') > 0 
main_str.indexOf(/\str/) > 0 
main_str.indexOf(/\"str"/) > 0 
main_str.indexOf(str) > 0 

가능한 모든 방법을 참조하십시오.

감사

답변

1

당신의 문자열에 1.png의 인덱스가 실제로 0,

main_str.indexOf('str') != -1 
1

당신은 replace를 사용하여 교체 할 수있는 : 둘 이상의 항목을 바꾸려면

main_str = main_str.replace(str, new_str) 

가 사용을

당신이 교체하기 전에 경고하려는 경우

main_str = main_str.replace(new RegExp(str,'g'), new_str) 
, 이것을하십시오 :

var r = new RegExp(str,'g'); 
if (main_str.match(r)) { 
    alert('found') 
    main_str = main_str.replace(r, new_str) 
} else { 
    alert('not found') 
} 
+0

같은 대문자 또는 혼합 된 경우를 할 수 있습니다. –

+0

@TallboY ​​: 무엇을 확인 하시겠습니까? –

1

main_str은 인덱스 0에 1.png을 포함하고 있으므로 main_str.indexOf('str') > 0이라는 체크를 사용하여 찾을 수 없습니다. 기억 나지 않는 경우 자바 스크립트는 -1을 반환하고 0은 아닙니다. 당신의 상태가 실패하는 이유 즉,

var str="1.png,2.png,3.jpg,4.gif"; 
var newStr=str.replace(".png",".jpg"); 
1

시도 : 그래서 당신은 당신의 상태를 업데이트해야합니다.

if(main_str.indexOf(str) >= 0){ 

그러나 여기에서 더 나은 접근 방법은 replace을 사용하는 것입니다 : 올바른 방법은 indexOf -1을 반환하기 때문에, 인덱스는 음수가 있는지 여부를 확인하는 문자열이 발견되지 않는 경우

main_str.replace(str, new_str) 
1

사용할 수있는 대체 방법 :

var str = '1.png,2.png,3.jpg,4.gif'; 
var result=str.replace('1.png','1.jpg') 
1

당신은이 작업을 수행 할 수 있습니다

var str = "1.png,2.png,3.jpg,4.gif"; 
var re = /(.png)/i; 
var found = str.match(re); 

//now ask the user or do whatever else is needed 
if (found){ 
    found = confirm("Really overwrite"); 
} 

if (found){ 
    str = str.replace(re, ".jpg"); 
} 

는 또한 지금 문자열에 내가 교체하기 전에 확인해야 ".Png" 또는 ".PNG"

관련 문제