Javascript.RU

split

Синтаксис

var arr = str.split([separator][, limit]);

Аргументы

separator
регулярное выражение или строка, по которой делить str
limit
максимальное количество кусков, на которые может быть разбита строка

Описание, примеры

Метод split возвращает новый массив.

Строка бьется по separator, при разбивании separator пропадает:

arr = "a,b,c".split(',')  // массив ["a", "b", "c"]

Если separator не указан или совпадений нет, то возвращаемый массив состоит из одного элемента - исходной строки.

Если separator является регулярным выражением со вложенными скобками, то каждый раз при совпадении separator все результаты захвата скобками, включая undefined результаты, добавляются в выходной массив.

Если вызывающая строка пуста, то split возвращает массив из одной пустой строки, а не пустой массив.

Следующий пример делит по ',' и убирает лишние пробелы вокруг запятой.

Пример: по регулярному выражению
var tags = "Лето, зима, осень 2009 года"
var re = /\s*,\s*/
var tagList = tags.split(re);
alert(tagList) //  ["Лето", "зима", "осень 2009 года"]
При делении с ограничением limit - элементы массива свыше limit будут отброшены.

Это поведение отличается от принятого во многих языках програмирования.

Пример: Ограничение массива
var str ="a b с d"
str.split(' ',2)  
// ["a", "b"], а не ["a" "b c d"]

Следующий пример иллюстрирует добавление в массив результатов захвата вложенными скобками.

Пример: Вложенные скобки
var myString = "Hello 1 word. Sentence number 2."
var splits = myString.split(/(\d)/)
// splits =  ["Hello ", "1", " word. Sentence number ", "2", "."]

Благодаря скобкам, найденный разделитель separator сохранился и вошел в результирующий массив.

См. также


Автор: Сварга (не зарегистрирован), дата: 15 декабря, 2009 - 21:26
#permalink

Можно ли по аналогии с myString.split(/(\d)/)
использовать что-то вроде myString.split(/(\[A-Za-z0-9])/) ?
Естественно это не работает, но что-то в этом духе


Автор: B@rmaley.e><e (не зарегистрирован), дата: 16 декабря, 2009 - 13:30
#permalink

> myString.split(/(\[A-Za-z0-9])/)
Конечо не будет работать, тут ошибка синтаксиса.

myString.split(/([A-Za-z0-9])/)
// а еще лучше
myString.split(/([a-z0-9])/i)
// или
myString.split(/(\w)/i) // тут, правда, еще и нижнее подчеркивание ловится

Автор: Бобр, дата: 29 января, 2010 - 16:28
#permalink

Как найти отдельные слова и строчки в кавычках? В поисковых строках обычно когда надо найти фразу, то её берут в кавычки. Например:

word "big phrase"

Такой текст должен быть разделён на два элемента массива:
1) word
2) big phrase

Как это сделать?


Автор: B@rmaley.e><e, дата: 29 января, 2010 - 16:40
#permalink

Тут нужны регэкспы либо разбор по токенам.

var str = 'word "big phrase"';
alert( str.match(/".+?"/g) );

Автор: Бобр, дата: 29 января, 2010 - 16:48
#permalink

Я понимаю, что нужны регэкспы, я не понимаю, как их написать.
Alert показывает только "big phrase", а надо, чтобы одна строчка массива - word, другая - "big phrase".


Автор: brud.90 (не зарегистрирован), дата: 2 марта, 2011 - 14:02
#permalink

я думаю, все-таки регулярка должна была быть

var str = 'word "big phrase"';
alert( str.match(/^.*?".+?"$/g) );

Автор: brud.90 (не зарегистрирован), дата: 2 марта, 2011 - 14:05
#permalink

забыл про скобочки

var str = 'word "big phrase"';
var matches = str.match(/^(.*?)"(.+?)"$/g) );
alert(matches[0]);//может быть пустым, если перед кавычкой ничего нет
alert(matches[1]);

Автор: Increazon, дата: 5 августа, 2010 - 23:25
#permalink

а да! я это и искал!!!


Автор: гость0101110 (не зарегистрирован), дата: 13 октября, 2010 - 14:09
#permalink

как можно узнать, сколько элементов получилось в массиве?
(исходная строка каждый раз разная)


Автор: Гость (не зарегистрирован), дата: 17 октября, 2010 - 15:10
#permalink

как сделать, чтобы разделители тоже записывались в поля?


Автор: Гость (не зарегистрирован), дата: 2 ноября, 2010 - 14:48
#permalink

Помогите плииииз.
Написать функцию, которая проверяет, что в строке, переданной в качестве аргумента, передается время в формате "чч.мм" или "чч.мм.сс". Если это так, то функция возвращает true, в противном случае - false.


Автор: djembuka, дата: 3 марта, 2011 - 10:13
#permalink

Если separator является регулярным выражением со вложенными скобками, то каждый раз при совпадении separator все результаты захвата скобками, включая undefined результаты, добавляются в выходной массив.

К сожалению, в IE вплоть до 8 результаты захвата скобками в массив не добавляются.


Автор: Vorber (не зарегистрирован), дата: 14 марта, 2011 - 16:41
#permalink

Вложенные скобки в регулярке не работают в ИЕ (как минимум 8-м). Я бы это добавил в описание примера.


Автор: Даниил (не зарегистрирован), дата: 16 декабря, 2011 - 20:13
#permalink

у меня строка
var str="2.9 2.6 2.5";
делаю через
str.split(',',3);
у меня все равно массив заполняется так
alert(str[0]); // 2
alert(str[1]); // .
alert(str[2]); // 9

а надо str[0]=2.9
str[1]=2.6


Автор: Гость (не зарегистрирован), дата: 16 декабря, 2011 - 20:14
#permalink

точнее str.split(' ',3);
просто и так и так пробывал


Автор: Гость (не зарегистрирован), дата: 20 декабря, 2011 - 15:21
#permalink

var str = "2.9 5.6 7.8";
str = str.split(' '); //пробел между кавычками
alert(str[2]); //7.8
сепаратор тут не запятая, а пробел. ты его не ставишь, поэтому выходит '2','.' и '9'


Автор: Гость (не зарегистрирован), дата: 28 декабря, 2011 - 18:39
#permalink

function(file, response){
#тут некие действия функции
response.split('#');
alert(response[0]); // выдает: "s", хотя в функцию респонс приходит таким: success#image_name.jpg
}


Автор: B@rmaley.e><e, дата: 29 декабря, 2011 - 00:40
#permalink

Метод split возвращает новый массив.


Автор: Vaz (не зарегистрирован), дата: 2 марта, 2012 - 14:06
#permalink

response.split('#');
alert(response[0]);
конечно не сработает, надо так:
response = response.split('#');
alert(response[0]);

ну, думаю ты понял - сплит строку не меняет, он просто возвращает массив. а ты алерт первого символа строки вызываешь.


Автор: Гость (не зарегистрирован), дата: 30 марта, 2012 - 19:43
#permalink

Доброго времени суток, помогите пожалуйста, наткнулся на такое задание
Напишите сценарий, выводящий на экран текст стихотворения:

Мы ехали на машине ПОБЕДА
Остались мы без ОБЕДА
Случилась БЕДА
Пропала ЕДА
Ты ее съела? – ДА

При этом слова, выделенные жирным шрифтом, получились от исходного слова «победа» (строчные буквы!), путем использования методов объекта String.

Как именно это нужно сделать корректно, чтобы не вызывало ошибок?


Автор: Гость (не зарегистрирован), дата: 1 апреля, 2012 - 21:13
#permalink

var word = "победа";
word = word.toUpperCase(); // слово заглавными буквами
Возможно есть и другой вариант
for (var i = 0; i ',word.substr(i,word.length));
} // выведет
ПОБЕДА
ОБЕДА
БЕДА
ЕДА
ДА


Автор: Гость (не зарегистрирован), дата: 1 апреля, 2012 - 21:17
#permalink

Ошибочка вышла в предыдущем сообщении
for (var i = 0; i < word.length-1; i++) {
document.write('',word.substr(i,word.length));
}


Автор: Гость Алексей (не зарегистрирован), дата: 20 апреля, 2012 - 16:46
#permalink

из php аяксом json_encode(php_массив) возвращает строку:
(new String("{\"67640\":\"\\u0410\\u043d\\u0433\\u0430\\u0440\\u0441\\u043a\",\"68511\":\"\\u0411\\u0440\\u0430\\u0442\\u0441\\u043a\" ...

Как эту строку сделать массивом?


Автор: alexx777 (не зарегистрирован), дата: 5 июля, 2012 - 09:07
#permalink

подскажите пожалуйста,
есть строка: -слово1 -слово2 -слово3...
как добавить слова в массив чтобы было: ["слово1", "слово2", "слово3"..], т.е. без тире?


Автор: Семён Семёнович (не зарегистрирован), дата: 16 июля, 2012 - 13:43
#permalink

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


Автор: dexif (не зарегистрирован), дата: 12 сентября, 2012 - 11:00
#permalink

Строка уже является массивом букв...

var s="проба";
for(var i=0;i<s.length;i++){
    alert(s[i]);
}

Автор: Гость (не зарегистрирован), дата: 26 ноября, 2012 - 15:02
#permalink

Подскажите пожалуйста, как разбить текст без пробелов по кол-ву символов?
например (по 3 символа): исходник - "абвгдеу", на выходе - "абв", "где", "у"


Автор: jsbot, дата: 23 января, 2013 - 23:28
#permalink
granica=/(\b|\/\*|\*\/)/gim;
var masslov = MyText.split(granica);

получаю текст от пользователя но при разбиении если в тексте есть спец символы
например

&nbsp;

разбивает его на & и nbsp;.что делать, подскажите


Автор: Гость, дата: 11 мая, 2013 - 12:22
#permalink

Здравствуйте. Подскажите, пожалуйста, почему

"ccc;<p>ddd</p>".split(';')

Выводит

ccc,<,p>,ddd<,/p>,

вместо

ссс,<p>ddd</p>

?


Автор: Гость (не зарегистрирован), дата: 11 мая, 2013 - 16:37
#permalink

Уже понял. В базе данных символ < заменялся на

&lt;

Отсюда и полученный результат


Автор: atlantidu (не зарегистрирован), дата: 6 сентября, 2013 - 09:42
#permalink

> Подскажите пожалуйста, как разбить текст без пробелов по кол-ву символов?
Подсказываю:

var count = 5; // количество
var string = "abcxyz123^"; // исходная строка

var pattern = RegExp("((.{"+count+"})+?|(.{1,"+count+"})$)", "g")
var splitted = string.match(pattern);
alert(splitted);

Автор: Гость (не зарегистрирован), дата: 16 сентября, 2013 - 18:53
#permalink
Это совсем не комментарий это крик о помощи!!!! 
Так и не смог найти ответ на мой вопрос.......
 имеется строка такого вида :
 str_ing = "<a href="img/pic_01.jpg"><img src="img/pic_01_s.jpg"></a><a href="img/pic_02.jpg"><img src="img/pic_02_s.jpg"></a> <a href="img/pic_03.jpg"><img src="img/pic_03_s.jpg"></a>"
 необходимо получить массив вида :
 arr_str[0] = "<a href="img/pic_01.jpg"><img src="img/pic_01_s.jpg"></a>"
 arr_str[1] = "<a href="img/pic_02.jpg"><img src="img/pic_02_s.jpg"></a>"
 arr_str[2] = "<a href="img/pic_03.jpg"><img src="img/pic_03_s.jpg"></a>"
  пишу так -  var arr_str = pic_msg.split('</a>'); эффект нулевой
Я понимаю, что затык в использовании в качестве сепаратора  "</a>" (другие сепараторы проходят) но как вывернуться не могу понять.
ПОМОГИТЕ !!!!!  Думаю, что этот вопрос будет интересен и другим.
Хорошо бы и сепаратор оставить в строке, но добавить к каждой строке эту потерю не так и сложно, правда это лишнее действие
Спасибо
Берегите себя и своих близких
Борис

Автор: Гость из моря (не зарегистрирован), дата: 16 сентября, 2013 - 22:11
#permalink

Попробуй экранировать слеш: arr_str = pic_msg.split('<\/a>');


Автор: Гость (не зарегистрирован), дата: 17 сентября, 2013 - 15:16
#permalink
Пробовал экранировать спецсимволы
        var arr_str = pic_msg.split('\<\/a\>');
   Эффект нулевой.... что то здесь другое и мне непонятное
Борис

Автор: rodion6, дата: 18 сентября, 2013 - 08:57
#permalink

Сделайте то же самое, но через регулярное выражение с сохраняющими скобками. В сохраняющих скобках должен быть код примерно такой (точнее всё-таки его проверьте:

/(<a[^(?:</a)]*</a>)/

А дальше берёте $1 и вставляете в массив отдельно.
С уважением, Р.Н. Юрьев.


Автор: Гость (не зарегистрирован), дата: 18 сентября, 2013 - 18:17
#permalink
Если я Вас правильно понял, то надо сделать так
 var re = (/(<a[^(?:</a)]*</a>)/);
 var arr_str = pic_msg.split(re);     // но так ТОЖЕ не работает

А дальше берёте $1 и вставляете в массив отдельно. // а здесь я совсем ничего не понял
Если не трудно напишите для непонятливого эти пару строчек кода ПОЛНОСТЬЮ
Спасибо
Борис

Автор: Гость (не зарегистрирован), дата: 18 сентября, 2013 - 18:23
#permalink

сори
я допустил описку во второй строке, следует читать так
var arr_str =str_ing.split(re);


Автор: Гость (не зарегистрирован), дата: 10 декабря, 2013 - 10:10
#permalink

Мне надо написать класс, который считал бы сегменты. И чтоб он не разделял, например: "как-то", считал за один сегмент. прошу Вас, люди добрые помогите! я представления не имею, как это сделать...


Автор: Гость (не зарегистрирован), дата: 12 января, 2014 - 11:24
#permalink

Подскажите, пожалуйста, как можно разбить строку по всем прописным буквам?


Автор: Mellon (не зарегистрирован), дата: 14 января, 2014 - 08:24
#permalink

Почему вы переводите в "If separator is a regular expression that contains capturing parentheses, then each time separator is matched, the results (including any undefined results) of the capturing parentheses are spliced into the output array. However, not all browsers support this capability." capturing как вложенные? capturing - захватывающие, имеется в виду открывающая и закрывающая скобка.


Автор: Vs_1802 (не зарегистрирован), дата: 3 февраля, 2014 - 20:36
#permalink

Доброго времени суток! Подскажите пожалуйста регулярное выражение, что бы получить массив со строки, и исключить "разделитель", что находится внутри скобок. Вот строка:

sel,1,function(par1,par2),2

Результат: "sel","1","function(par1,par2)","2"
Заранее спасибо!


Автор: Гость (не зарегистрирован), дата: 17 февраля, 2014 - 01:09
#permalink

Нашел скрипт, который считает слова в тексте. Слова считаю в XUL textbox.

Все работает при латинице. Однако кириллические буквы и слова не видит. Скрипт привожу ниже.

var stringText = document.getElementById("text").value.replace(/\n/," ").replace(/\W/gi," ").replace(/\s{2,}/gi," ").replace(/ $/,"").replace(/^ /,"");
	var text_array = stringText.split(" ");
	document.getElementById("rezstattextword").value = text_array.length;

Как мне посчитать слова на любом языке?


Автор: Гость (не зарегистрирован), дата: 8 апреля, 2014 - 14:58
#permalink

Здравствуйте! Есть один вопрос:
Есть текстовое поле, в которое вводим числа через пробел - целые, дробные, отрицательные - все короче. Нужно найти максимум среди этих чисел.
Есть идея, что нужно строку разбить на элементы, запилить эти элементы в числовой формат и сделать из них массив чисел. А потом уже пробежаться по массиву функцией Math.max.
Подскажите пожалуйста, как из строки чисел сделать массив чисел.... Пожалуйста, помогите! :-)


Автор: alex33, дата: 12 апреля, 2014 - 08:14
#permalink

________________ "Метод split возвращает новый массив."
Вот он массив уже возвращает. А в качестве разделителя используй " "


Автор: Гость (не зарегистрирован), дата: 22 июня, 2017 - 16:45
#permalink

Люди, помогите, пожалуйста. Есть задача: считать файл, разбить текст по строкам и занести эти строки в массив, методом перебора перебрать все элементы массива и удалить те, в которых есть символ ";", а также убрать пробелы и пустые строки, очищенный массив сохранить в новом файле. Алгоритм как это сделать понимаю, не хватает знаний реализовать это!


Автор: Гость (не зарегистрирован), дата: 15 августа, 2017 - 22:57
#permalink

"data": {
"new": "[[\"Арбуз\",\"Тыква\",\"\",\"5\",\"\",\"\",\"7\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]]"
}
// Как распарсить вот такую ерунду ?


Автор: mcmega, дата: 12 ноября, 2017 - 18:12
#permalink

Подскажите, а если есть строка (я ее достаю как значение ключа из объекта device)
{ "dls":"[\"en\",\"ru\",\"fr\"]" }

const langList = device.dls;
console.log(langList); // ["en","ru","fr"]

Нужно получить точно такой же массив

["en","ru","fr"]

Как это сделать?


Автор: Айдар Исмагулов (не зарегистрирован), дата: 25 декабря, 2017 - 09:13
#permalink

Интересно,а как преобразовать строку в ассоциативный массив?


Автор: Гость (не зарегистрирован), дата: 1 ноября, 2018 - 12:47
#permalink

Подскажите, пожалуйста, как сделать, если нужно, чтобы разделителей было несколько. Например, есть текст:

Приветствуются комментарии:
Полезные.
Дополняющие прочитанное.
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
Для остальных вопросов и обсуждений есть форум.

Нужно удалить знаки препинания, пробелы и т.п. и на выходе получить токенизированный текст, т.е. только слова:
Приветствуются
комментарии
Полезные
и т.д.


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum