2016-07-01 2 views
1

를 사용하여 문자를 제거하여 문자열을 변환합니다. 변환하고 싶습니다 foo[bar][baz]어떻게 선택적으로 추가하거나 나는 다음과 같은 문제를 고민하고 자바 스크립트

JavaScript로 변환하는 깔끔한 방법은 있습니까?

+2

지금까지 시도한 내용과 데모를 게시하여 문제를 재현 할 수 있습니까? – elclanrs

+0

정규식을 사용하면이 문제를 쉽게 해결할 수 있습니다. –

+0

사전에 저장 하시겠습니까? –

답변

3

splitjoin로 쉽게 : 당신은 어떤이있는 경우, 당신은 같은 에지의 경우에 대해 충분히 옵션을 (주지 않는다

var str = 'foo.bar.baz'; 
str = str.replace(/\.([a-z]{3})/g, "[$1]"); 
0

'.'이있는 문자열을 변환하려고한다고 가정합니다. 텍스트 앞에.

var str = 'foo.bar.baz'; 
var splittedArray = str.split('.'); 
var result = splittedArray[0]; 
for(var i = 1; i < splittedArray.length; i++) { 
result += '[' + splittedArray[i] + ']'; 
} 
0

는 정규식을 사용하여 단일 문자열, 즉 foo. foo[] 또는 foo을 반환해야합니까?).

function greatFunc(txt) { 
    var ls = txt.split('.'); 
    if (ls.length === 1) { // edge case here! 
     return txt; 
    } 
    return ls[0] + '[' + ls.splice(1).join('][') + ']'; 
} 

greatFunc('foo.bar.baz') // foo[bar][baz] 
greatFunc('foo.bar.baz.kop.pop') // foo[bar][baz][kop][pop] 
greatFunc('foo') // foo or foo[] if you delete the if clause. 

다른 사람에 의해 언급, 물론 정규식 솔루션이있다 :

어느 쪽이 방법 여기이 질문에 내 샷입니다! 내 의견으로는 훨씬 깨끗하고, 어떤 js보다 훨씬 빠릅니다.

+0

나는 길이 3이 필요하다고 생각하지 않는다. '/\.([^.]*)/g'을 고려하십시오 – Oriol

+0

참. 나도 잘 모르겠다. ^^ – Arnauld

1

:

var arr = 'foo.bar.baz'.split('.'); 
arr.shift() + '[' + arr.join('][') + ']'; // "foo[bar][baz]" 
관련 문제