2009-11-09 7 views
1

다음 jquery 문이 있습니다. 나는 아래와 같이 공백을 제거하고 싶다. 내가 좋아하는 단어가 그래서 경우 : 예
자바 스크립트를 사용하여 공백 문자를 이스케이프 처리합니다.

  • #Operating/System를 들어

    을 나는 나에게 #Operating\/System을 표시합니다 최종 결과를 싶습니다. (예 : 이스케이프 시퀀스). 그때 #Operating/System test이있는 경우


  • 는하지만 #Operating\/System + 공간에 대한 이스케이프 시퀀스를 보여주고 싶어요. .replace(/ /,'') 부분이 올바르지 않지만 .replace("/","\\/")은 으로 잘 작동합니다.

도와주세요!

$("#word" + lbl.eq(i).text().replace("/","\\/").replace(/ /,'')).hide(); 
+1

당신의 머리 속에 당신의 설명이 정확합니다. 다행이지만, 다른 질문을 업데이트해야합니다 : http://stackoverflow.com/questions/1703529/how-do-i-strip-white-space-when-grabbing -a-text –

+0

음. 나중에 참조 할 수 있도록 대답을 표시하겠습니다. 그러나 이것은 새로운 질문입니다. 도와 주셔서 감사합니다! –

+0

나는 (잠정적으로) 당신이 틀린 일 (잘못된 길로 옳은 일, 심지어 나쁜 것)을하려고 노력한다고 말할 것이다. * 왜 * 문자열의 특정 문자를 이스케이프하고 싶습니까? – Tomalak

답변

3
$("#word" + lbl.eq(i).text().replace(/([ /])/g, '\\$1')).hide(); 

이 모두 공백 일치 슬래시 문자열 (그룹 $1의 각 문자를 저장)

/([ /])/g 

여분

'\\$1' 

와 백 슬래시 수단 플러스 그룹 $1의 원래 문자.

"#Operating/System test".replace(/([ /])/g, '\\$1'); 
--> 
"#Operating\/System\ test" 

측면 장점 - replace()에 단 하나의 호출이 있습니다.

편집 : OP에서 요청한대로 정규 표현식 /([ /])/g에 대한 간략한 설명. 그것은 다음과 같은 고장 :

 
/   # start of regex literal 
    (  # start of match group $1 
    [ /] # a character class (spaces and slashes) 
)   # end of group $1 
/g   # end of regex literal + "global" modifier 

위와 replace() 사용, 모든 공간과 슬래시 앞에 백 슬래시 자체로 대체됩니다.

+0

그럼이 작품은 환상적입니다. 예를 들어, "Operating System"과 같은 공백이있는 어떤 것이라도 괜찮습니다. "Operating/System"또는 "Operating/System test"가 작동하지 않습니다. 또한, 나는 이것을 이해할 수 없으므로이 대체 (/ ([/])/g, '\\ $ 1') 문을 설명 할 수 있다면 정말 감사 할 것입니다. 다시 한번 감사드립니다. –

+0

방금 ​​테스트 해 봤는데 저를 위해서 그것은 슬래시를 대체합니다. 어떻게 테스트 했습니까? – Tomalak

+0

내 코드에는 큰 따옴표가 없으며 사고가 아닙니다. ;-) 특히'replace()'와 일반적으로 정규 표현식에 대해 몇 줄을 읽어야한다. – Tomalak

관련 문제