2009-12-10 3 views
0

Я хочу разбить строку, которая может выглядеть так: word1; word2; word3, word4, word5, word6.word7. и т. д.Как разбить строку, содержащую разные знаки?

Строка из результата, который я получаю с php-страницы, которая собирает данные из базы данных, поэтому строка может выглядеть по-другому, но первые слова всегда разделяются; и затем, и последние слова с. (точка)

Я хочу, чтобы иметь возможность получить все слова, которые заканчиваются, например; , или . в массив. Кто-нибудь знает, как это сделать?

Я также хотел бы знать, как получить только слова, которые заканчиваются;

Функция ends_with (string, character) ниже работает, но это не касается пробелов. Например, если слово Jonas Sand, оно печатает только Sand. Кто-нибудь знает, как это исправить?

ответ

7

Вероятно

var string = "word1;word2;word3,word4,word5,word6.word7"; 
var array = string.split(/[;,.]/); 
// array = ["word1", "word2", "word3", "word4", "word5", "word6", "word7"] 

Ключ в регулярном выражении передается методу String#split. Оператор класса символов [] позволяет регулярному выражению выбирать между содержащимися в нем символами.

Если вам нужно разделить на строку, содержащую более одного символа, вы можете использовать | для дифференциации.

var array = string.split(/;|,|./) // same as above 

Edit: Не внимательно прочитать вопрос. Что-то вроде этого

var string = "word1;word2;word3,word4,word5,word6.word7"; 

function ends_with(string, character) { 
    var regexp = new RegExp('\\w+' + character, 'g'); 
    var matches = string.match(regexp); 
    var replacer = new RegExp(character + '$'); 
    return matches.map(function(ee) { 
    return ee.replace(replacer, ''); 
    }); 
} 
// ends_with(string, ';') => ["word1", "word2"] 
+0

Но если я просто хочу, чтобы слова, которые заканчиваются; – user228720

+0

приятно !! это отлично работает ... Спасибо! – user228720

+0

По-прежнему возникают проблемы, когда для примера word3 есть пробелы, такие как ; Джеймс, Джонас Санд, код только распечатывает Говард, Песок – user228720

0
var myString = word1;word2;word3,word4,word5,word6.word7; 
var result = myString.split(/;|,|./);