2011-03-31 7 views
47

주어진 문자열에서 '_'(밑줄)의 마지막 항목을 쉽게 대체 할 수 있습니까?문자열의 마지막 문자 교체

+0

항상 문자열의 마지막 문자입니까? 그렇지 않다면 string.lastIndexOf (searchstring, start)를보십시오 – skarmats

+0

[jQuery가 필요하지 않습니다] (http://meta.stackexchange.com/questions/45176/when-is-use-jquery-not-a -valid-answer-to-a-javascript- 질문). – zzzzBov

+0

가능한 중복 [자바 스크립트를 사용하여 문자열의 마지막 문자를 바꾸는 방법] (http://stackoverflow.com/questions/3829483/how-to-replace-last-occurrence-of-characters-in-a-string -using-javascript) –

답변

91

jQuery는 필요하지 않습니다. 정규 표현식입니다.

var str = 'a_b_c'; 
str = str.replace(/_([^_]*)$/,'$1'); //a_bc 

이 변수 replacement의 내용으로 대체합니다 :

마지막 밑줄을 제거합니다

var str = 'a_b_c', replacement = '!'; 
str = str.replace(/_([^_]*)$/,replacement+'$1'); //a_b!c 
+1

+1 Hurtigkarl :))) – mplungjan

+2

@Martin Jespersen : 대체 할 텍스트가 밑줄이 아니고 replaceMe라는 변수의 내용이면 어떻게 될까요? 정규식은 어떻게 수정해야합니까? – Pierpaolo

+1

@Pierpaolo : 새로운 정규 표현식을 사용하여 정규 표현식을 만들어야합니다. https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions - 탈출을 잊지 마십시오. 'replaceMe' 변수는 정규 표현식을 변경할 특수 문자를 포함하지 않습니다. –

47

var pos = str.lastIndexOf('_'); 
str = str.substring(0,pos) + otherchar + str.substring(pos+1) 

마지막으로 밑줄을

를 교체하거나 것 정규 표현식 중 하나를 사용하도록

str = str.substring(0,str.length-2)+otherchar

문자열에서 마지막 문자를 대체 할 수 없음 jQuery를위한 필요성도 정규식 누군가와 잠시 나간다.

+4

+1은 "jQuery가 필요 없음"입니다. JQuery가 모든 것에 대한 해답이 아니라는 것을 아는 것이 중요합니다.Javascript는 jquery를 통해 모든 것을 푸시 할 필요없이 완벽한 프로그래밍 언어입니다. – Spudley

+1

@ Spudley 그렇습니다. 그러나 여기에 그래서 아무 JS 대답 jQuery 버전없이 완료됩니다;)) – mplungjan

+3

* 정규식 * & ***'lastIndexOf (...)'에 대한 + 1은 끝 ***에서 검색합니까 (더 나은 성능) 그래서 현재 받아 들여지는 regexp는 더 빠를 수 없다. –

0

은 간단

var someString = "a_b_c"; 
var newCharacter = "+"; 

var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1); 
0

당신이 코드

var str="test_String_ABC"; 
 
var strReplacedWith=" and "; 
 
var currentIndex = str.lastIndexOf("_"); 
 
str = str.substring(0, currentIndex) + strReplacedWith + str.substring(currentIndex + 1, str.length); 
 

 
alert(str);

3

어떤 약을 사용할 수 있습니다 유지 : 여기

는 자바 스크립트 문자열을 반전의 게시물입니다 이?

function replaceLast(x, y, z){ 
    var a = x.split(""); 
    a[x.lastIndexOf(y)] = z; 
    return a.join(""); 
} 

replaceLast("Hello world!", "l", "x"); // Hello worxd! 
0

이 mplungjan의 대답과 매우 유사하지만, 어쨌든, 난 그냥 '생각 (당신이 바로 후 다른 문자열 조작을 할 필요 배열로 유지하려는 특히 경우) 좀 더 쉽게 할 수있다 다른 사람이 선호하기 때문에 거기에 넣으십시오. '-'당신이 그것을 대체 할 문자 또는 문자열로 대체 할 수

var str = 'a_b_c'; 
 
str = str.split(''); //['a','_','b','_','c'] 
 
str.splice(str.lastIndexOf('_'),1,'-'); //['a','_','b','-','c'] 
 
str = str.join(''); //'a_b-c'

는 '_'당신이

를 교체 할 문자 그리고 함께 교환 할 수 있습니다