2013-01-15 16 views
6

Olası Çoğalt:
how to split a string in js with some exceptionsKaçış karakterini kullanarak javascript bölünme yöntemini nasıl kullanabilirim?

Örneğin dize ise:

abc&def&ghi\&klm&nop 

Gerekli çıkış dizesi dizidir

['abc', 'def', 'ghi\&klm', 'nop] 

Lütfen bana en basit çözümü öner.

+0

rağmen, aynı sorunu çözmek yapar ve çevirmek zor olmamalı: http://stackoverflow.com/questions/3870415/splitting-a-string-o-kaçış-sıra-kullanarak-düzenli-ifade-in-java –

+3

@ cheeseweasel ne yazık ki, js "negatif lookbehind" uygulamıyor, çevirmek o kadar kolay olmayacak. ;) – Yoshi

+1

bazı yardımcı okumalar: [Javascript'te Lookbehind'i taklit etme] (http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript) – Yoshi

cevap

-2

bu deneyin:

İşte
var v = "abc&def&ghi\&klm&nop"; 
var s = v.split("&"); 
for (var i = 0; i < s.length; i++) 
    console.log(s[i]); 
5

JavaScript bir çözümdür:

var str = 'abc&def&ghi\\&klm&nop', 
str.match(/([^\\\][^&]|\\&)+/g); //['abc', 'def', 'ghi\&klm', 'nop] 

O ([not \ and &] or [\ and &]) olan tüm karakterleri eşleştirmek için match kullanır. Ben

"abc&def&ghi\\&klm&nop".match(/(\\.|[^&])+/g) 
# ["abc", "def", "ghi\&klm", "nop"] 

:

4

ihtiyaç dizi içerecektir çift bölü işaretiyle \ & değiştirmeniz gerekiyor dize olduğunu varsayarak bir dış kaynaktan gelir ve bir javascript literal değildir.

0
Yalnızca oldschool indexOf ile yapabileceğiniz

: Bu yanıt Java için geçerlidir

var s = 'abc&def&ghi\\&klm&nop', 
    lastIndex = 0, 
    prevIndex = -1, 
    result = []; 
while ((lastIndex = s.indexOf('&', lastIndex+1)) > -1) { 
    if (s[lastIndex-1] != '\\') { 
     result.push(s.substring(prevIndex+1, lastIndex)); 
     prevIndex = lastIndex; 
    } 
} 
result.push(s.substring(prevIndex+1)); 
console.log(result); 
İlgili konular