Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не могу разобраться с методом split (https://javascript.ru/forum/misc/16860-ne-mogu-razobratsya-s-metodom-split.html)

ale19 25.04.2011 19:19

Не могу разобраться с методом split
 
Помогите разобраться с методом split
Разбить строку по одному какому-то separator это понятно,а подскажите как мне разбить к примеру

Он,Она/Они.Оно Мы:Вы;Нам-Вам

чтоб вернулся массив состоящий только из элементов-слов (разбить по всем знакам препинания)

"Он","Она","Они","Оно","Мы","Вы","H aм","Вам"

Sweet 25.04.2011 19:33

Нужно использовать регулярное выражение:
alert( 'Он,Она/Они.Оно Мы:Вы;Нам-Вам'.split(/[^А-яЁё]/) );

ale19 25.04.2011 19:39

Sweet,
спасибо!!!

ale19 25.04.2011 22:31

А вот для этого:
<div id="txt">Здесь текст</div>
<div id="txt1" style="dysplay:none;"></div>
var text = document.getElementById("txt").innerHTML.split(/[^А-яЁёA-z]/);
for (i=0; i<text.length; i++) {if (text[i].length>3 ){
var text2 = document.getElementById("txt1").innerHTML+=(text[i]+' ').split(' ');
}}


можно ли получить массив text2 без использования <div id="txt1"></div> ?

ale19 26.04.2011 17:05

я имею ввиду,что мне нужен массив text2 из только из слов без знаков препинания и колличеством букв в слове не меньше 4-х

melky 26.04.2011 19:35

Цитата:

Сообщение от Sweet (Сообщение 102091)
Нужно использовать регулярное выражение:
alert( 'Он,Она/Они.Оно Мы:Вы;Нам-Вам'.split(/[^А-яЁё]/) );

меня убила эта рега

чему она соответствует?

ВСЕМУ, исключая русский алфавит???

тогда...

alert( 'ОнаLOLОно\nОни'.split(/[^А-яЁё]/) );


получается, он не на LOL делает сплит, а на L, потом O и L ?

поэтому там пустое место?

ale19 26.04.2011 19:42

вобщем,его я хочу добиться чтоб получить этот массив
alert( 'Он,Она/Они.Оно Мы:Вы;Нам-Вам'.split(/[^А-яЁё]/) );

уже допустим без сдлов состоящих,к примеру для данного случая,из двух знаков

Sweet 26.04.2011 19:48

Цитата:

Сообщение от melky
чему она соответствует?

ВСЕМУ, исключая русский алфавит???

Да, и что??? Это был просто пример.
Цитата:

Сообщение от melky
получается, он не на LOL делает сплит, а на L, потом O и L ?

поэтому там пустое место?

Да.

Sweet 26.04.2011 19:51

Цитата:

Сообщение от ale19
вобщем,его я хочу добиться чтоб получить этот массив

уже допустим без сдлов состоящих,к примеру для данного случая,из двух знаков

Мой интерпритарор не осилил этот поток символов.

ale19 26.04.2011 20:12

Из
Он,Она/Они.Оно Мы:Вы;Нам-Вам
получить массив massiv
где:
massiv[0];//"Она"
massiv[1];//"Они"
massiv[2];//"Онo"
massiv[3];//"Нам"
massiv[4];//"Вам"
Так понятнее?...

Sweet 26.04.2011 20:18

Цитата:

Сообщение от ale19
Так понятнее?...

Не совсем:) Это просто утверждение или есть какие-то проблемы?

ale19 26.04.2011 20:50

не было бы проблемм не спрашивал бы,как это сделать...

melky 26.04.2011 20:50

Цитата:

Сообщение от Sweet (Сообщение 102234)
Да, и что??? Это был просто пример.Да.

у меня невыспанный мозг к вечеру взрывается :)

спасибо.

я удивлялся так

Sweet 26.04.2011 21:19

ale19, а в чем проблема? .split возвращает массив.

Aetae 26.04.2011 21:24

Цитата:

Сообщение от Sweet (Сообщение 102235)
Мой интерпритарор не осилил этот поток символов.

Мой осилил.)
massiv='Он,Она/Они.Оно Мы:Вы;Нам-Вам'.match(/[а-яё]{3,}/gi)
alert(massiv)

ale19 26.04.2011 21:27

Aetae,
Спасибо!!!

рони 26.04.2011 21:36

ale19,
alert("Он,Она/Они.Оно Мы:Вы;Нам-Вам".match(/[А-яЁё]{3,}/g));

monolithed 26.04.2011 22:19

Цитата:

Сообщение от Aetae
Мой осилил.)

потому что компилятор))

Андрей38 19.11.2011 23:52

Сдравствуйте.
У дива есть 2 сласса GG RR
<div class='GG_1 Э'> </div>
Первый (тот что GG ) надо оставить , а Э стереть (но не в дом !removeClass -не то для этой цели)
Делаю так
$('div').attr('class').split('GG_')[1]
Но получаю 1 E.Этого Э как раз и не надо
Нужно рег выражение ? Подскажите готовое решение?

trikadin 19.11.2011 23:57

Потому что нумерация с нуля идёт.
alert('GG_1 Э'.split(" ")[0]);

Андрей38 20.11.2011 00:03

Цитата:

Сообщение от trikadin (Сообщение 137729)
Потому что нумерация с нуля идёт.
alert('GG_1 Э'.split(" ")[0]);

WOW!ОГРОМНОЕ СПАСИБО ВАМ,ГУРУ:thanks:

Андрей38 20.11.2011 00:41

Спасибо! Но достать цифру меня получилось 2-мя последовательными сплитами .А можна как то еще проще сделать те достать отсюда ТОЛЬКО число 1 ?
alert('GG_1 Э'.split("xxxx ")[хххх])

Aetae 20.11.2011 01:08

Проще и правильнее это делается не split'ом, он для абсолютно других целей нужен.
http://javascript.ru/string
http://javascript.ru/RegExp
Половина из методов приведённых снизу тут подойдёт. Рекомендую ознакомиться полностью со всеми статьями.

alert('GG_1 Э'.split(/\D+/)[1])

stopkran 20.11.2011 16:03

Ну, напишите наоборот (противоположное Sweet) и добавьте условие про 3 знака, примерно так:

alert('Он,Она/Они.Оно Мы:Вы;Нам-Вам'.match(/([А-яЁё]{3,})/g))


тьфу, блин... не дочитал тему до конца - уже были такие примеры... а удалить сообщение что-то не могу.

Андрей38 21.11.2011 15:22

Цитата:

Сообщение от Aetae (Сообщение 137740)
Проще и правильнее это делается не split'ом, он для абсолютно других целей нужен.
http://javascript.ru/string
http://javascript.ru/RegExp
Половина из методов приведённых снизу тут подойдёт. Рекомендую ознакомиться полностью со всеми статьями.

alert('GG_1 Э'.split(/\D+/)[1])

Спасибо,Гуру! Почитаю и поэксперементирую.А пока 2 штуки сплитов выручили и дало возможность дальше реализавывать мою задумку
слайс-рулит
var str ="Вот такая строка"
str.slice(0,2) // "Во"
str.slice(1,-1) // "от такая строк"
..Уже и регулярка заработала,что еще лучьше и надежнее,как я думаю

Андрей38 21.11.2011 20:48

Цитата:

Сообщение от trikadin (Сообщение 137729)
Потому что нумерация с нуля идёт.
alert('GG_1 Э'.split(" ")[0]);

Из всего (регулярок и слайсов),предпочел Ваш вариант
Спасибо.Код стал в раза в 2 короче

trikadin 21.11.2011 20:58

Цитата:

Сообщение от Андрей38
Из всего (регулярок и слайсов),предпочел Ваш вариант

Это ваш вариант) Я просто показал, как правильно.

Андрей38 22.11.2011 18:55

:yes: :thanks: Cпасибо


Часовой пояс GMT +3, время: 19:43.