Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Метод replace (https://javascript.ru/forum/events/28049-metod-replace.html)

cyber 05.05.2012 18:07

Метод replace
 
помогите с методом replace
есть строка для нее используется метод replace и нужно чтоб строка заканчивалась пробелом , т.е надо вырезать последние слово в строке до пробела .
пробывал так но не работает
findEndSymols.replace(new RegExp(/\s(([A-Za-zА-Яа-я0-9])*)$/ ))

помогите пожалуста

Раед 05.05.2012 18:35

findEndSymols = 'это моя строка для теста, IT ALSO HAS ENGLISH WORDS. Начнём';
findEndSymols = findEndSymols.replace(/(\s+[a-zа-я0-9ё]+)(?=\s*$)/i,' ');
alert(findEndSymols);

DreamTheater 05.05.2012 18:44

findEndSymols = 'это моя строка для теста, IT ALSO HAS ENGLISH WORDS. Начнём';
findEndSymols = findEndSymols.replace(/[^\s]+$/,'');
alert(findEndSymols);

Так проще :)

Раед 05.05.2012 18:58

Цитата:

Сообщение от DreamTheater
Так проще

И непонятней. Можете пояснить, как эта рега вообще находит символы?

cyber 05.05.2012 19:09

Цитата:

Сообщение от Раед (Сообщение 172855)
И непонятней. Можете пояснить, как эта рега вообще находит символы?

ага понял, она ищет пробел с конца строки.
спс за помощь

Раед 05.05.2012 19:12

Цитата:

Сообщение от cyber
она ищет пробел с конца строки

Что пробел ищет, это ясно, а слово то она как находит?

cyber 05.05.2012 19:14

не один из вариантов не работает в моем скрипте=(
вот так использую
Text.VisibleText=function(TextPercent,StringLength,TextString){
	var endLen, findEndSymols;
	endLen=(StringLength/100)*TextPercent;
	findEndSymols=TextString.slice(endLen);
     /*   findEndSymols=findEndSymols.indexOf(" ");
        endLen=endLen+findEndSymols;//выризать начиная с пробела*/
	findEndSymols = findEndSymols.replace(/[^\s]+$/,'');
return findEndSymols;
	//return TextString.slice(0,endLen);
	
	}

skymanrm 05.05.2012 20:09

Цитата:

Сообщение от Раед
Сообщение от cyber
она ищет пробел с конца строки
Что пробел ищет, это ясно, а слово то она как находит?

А что непонятного?
[^\s]+ - любое кол-во символов кроме пробелом, табов и т.п. )

Раед 05.05.2012 20:33

Цитата:

Сообщение от skymanrm
[^\s]+ - любое кол-во символов кроме пробелом, табов и т.п. )

Что-то заклинило, забыл про значение символа ^ в квадратных скобках

melky 05.05.2012 22:45

Цитата:

Сообщение от DreamTheater (Сообщение 172854)
findEndSymols = 'это моя строка для теста, IT ALSO HAS ENGLISH WORDS. Начнём';
findEndSymols = findEndSymols.replace(/[^\s]+$/,'');
alert(findEndSymols);

Так проще :)

findEndSymols = 'эге - гей!!';
findEndSymols = findEndSymols.replace(/[^\s]+$/,'');
alert(findEndSymols);

Раед 05.05.2012 23:36

melky,
Не понял, а что не так?

melky 05.05.2012 23:43

Цитата:

Сообщение от Раед (Сообщение 172903)
melky,
Не понял, а что не так?

Цитата:

Сообщение от cyber
надо вырезать последние слово в строке до пробела .

упс, по диагонали прочитал , извиняюсь.

всё хорошо :)

nerv_ 06.05.2012 12:13

// [^\s] === \S
findEndSymols = 'это моя строка для теста, IT ALSO HAS ENGLISH WORDS. Начнём';
findEndSymols = findEndSymols.replace(/\S+$/,' ');
alert(findEndSymols);


Цитата:

Сообщение от cyber
ага понял, она ищет пробел с конца строки.

нет

Раед 06.05.2012 12:28

nerv_,
Вот только одна проблема с вашим регом и с регом DreamTheater

findEndSymols = 'это моя строка для теста, IT ALSO HAS ENGLISH WORDS. Начнём ';
findEndSymols = findEndSymols.replace(/\S+$/,' ');
alert(findEndSymols);

nerv_ 06.05.2012 12:34

Цитата:

Сообщение от cyber
нужно чтоб строка заканчивалась пробелом

//

cyber 06.05.2012 18:15

спс за ответы конечно ,но один из вариантов не работает правильно.
смотритен сами http://learn.javascript.ru/play/uhZTe
зачем мне это нужно :
я обрезаю переданную строку и что б она не заканчивалась на средине слова ищу пробел , но все предложенные вариант обрезают пол строки.

nerv_ 06.05.2012 20:01

cyber, думаю, для этих целей больше подойдет следующий алгоритм:
var text = "Legend of Grimrock — это ролевая игра от студии Almost Human Games, которая также выступила и издателем. Проект вышел 11 апреля и стал самым продаваемым в Steam на прошлой неделе, при этом разработчики говорят, затраты на ее разработку уже окупились.";

var shortString = text.slice( 0, text.lastIndexOf( ' ', 50 ) );	// где 50 максимальная длинна строки

alert( shortString );

cyber 06.05.2012 21:29

кстати да как я сам не додумался=)
спс

melky 06.05.2012 22:31

nerv_, зачем второй параметр lastIndexOf ?

nerv_ 06.05.2012 22:52

melky, как зачем? Чтоб былО ) Установить нужную длину строки.

cyber 07.05.2012 00:38

Цитата:

Сообщение от melky (Сообщение 173034)
nerv_, зачем второй параметр lastIndexOf ?

затем что б обрезать строку под определенную длину.
вот готовый вариант скрипта
http://learn.javascript.ru/play/eZnUOb
может кому то понадобится=)


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