Используйте DOMParser()
, чтобы преобразовать responseText
в дерево DOM с возможностью поиска. Кроме того, ваши попытки поиска / использования чего-либо, полученного из responseText
, должны происходить внутри функции onload
.
Используйте такой код:
GM_xmlhttpRequest ( {
...
onload: parseAJAX_ResponseHTML,
...
} );
function parseAJAX_ResponseHTML (respObject) {
var parser = new DOMParser ();
var responseDoc = parser.parseFromString (respObject.responseText, "text/html");
console.log (responseDoc.getElementsByTagName('div'));
console.log (responseDoc.getElementById('result_0'));
}
Конечно, также убедитесь, что узел с id result_0
фактически находится в возвращенном HTML. (Использование Firebug, Wireshark и т. Д.)
Передача в regexp как параметр:
js> "Hello awesome, world!".split(/[\s,]+/)
Hello,awesome,world!
Отредактированный для добавления:
можно получить последний элемент путем выбора длины массива минус 1:
>>> bits = "Hello awesome, world!".split(/[\s,]+/)
["Hello", "awesome", "world!"]
>>> bit = bits[bits.length - 1]
"world!"
... и если шаблон не соответствует:
>>> bits = "Hello awesome, world!".split(/foo/)
["Hello awesome, world!"]
>>> bits[bits.length - 1]
"Hello awesome, world!"
Возможно, необходимо сделать своего рода строковую замену для превращения одного разделителя в другой разделитель, таким образом, у Вас тогда только есть один разделитель для контакта с в разделении.
Можно передать regex в оператор разделения JavaScript. Например:
"1,2 3".split(/,| /)
["1", "2", "3"]
Или, если Вы хотите позволить нескольким разделителям вместе действовать как одно единственное:
"1, 2, , 3".split(/(?:,| )+/)
["1", "2", "3"]
(Необходимо использовать неполучение (?:) parens, потому что иначе это становится соединенным назад в результат. Или можно быть умными как Aaron и использовать класс символов.)
(Примеры, протестированные в Safari + FF)
Я обеспечу классическую реализацию для такой функции. Код работает почти во всех версиях JavaScript и так или иначе оптимален.
Просто чистый код:
var text = "Create a function, that will return an array (of string), with the words inside the text";
println(getWords(text));
function getWords(text)
{
let startWord = -1;
let ar = [];
for(let i = 0; i <= text.length; i++)
{
let c = i < text.length ? text[i] : " ";
if (!isSeparator(c) && startWord < 0)
{
startWord = i;
}
if (isSeparator(c) && startWord >= 0)
{
let word = text.substring(startWord, i);
ar.push(word);
startWord = -1;
}
}
return ar;
}
function isSeparator(c)
{
var separators = [" ", "\t", "\n", "\r", ",", ";", ".", "!", "?", "(", ")"];
return separators.includes(c);
}
Вы видите, что код работает в детской площадке: https://codeguppy.com/code.html? IJI0E4OGnkyTZnoszAzf
Мой осуществлять рефакторинг ответа @Brian
var string = 'and this is some kind of information and another text and simple and some egample or red or text';
var separators = ['and', 'or'];
function splitMulti(str, separators){
var tempChar = 't3mp'; //prevent short text separator in split down
//split by regex e.g. \b(or|and)\b
var re = new RegExp('\\b(' + separators.join('|') + ')\\b' , "g");
str = str.replace(re, tempChar).split(tempChar);
// trim & remove empty
return str.map(el => el.trim()).filter(el => el.length > 0);
}
console.log(splitMulti(string, separators))