Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2012, 18:57
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

вставка строки в строку
необходимо автоматически добавить в какойто текст(строку), конструкцию(строку) " ...[end] " после n-ого слова (в примере это 5 слово).

допустим есть текст:
aaa bbb ccc ddd
[a url="http://vk.com/bpystep"]123[/a]
[img url='http://cs4578.userapi.com/a_0b40d4e9.jpg' pos='center']

и скрипт:
var list = node.value.split(" "); //node - это обект TextArea
var pos = node.value.indexOf(list[4]);

for (var i=0; i<list.length; i++) {
	if (list[i] == '...[end]') { // проверяет есть ли уже в тексте " ...[end] "
		var flag = true;
	}
}
if (!flag) { // ну и если нет
	var str1 = node.value.substr(0,pos);
	var str2 = node.value.substr(pos);
	node.value = str1+' ...[end] '+str2; // добавляет " ...[end] "
}

проблема в том, что скрипт разбивает как слова(по принципу разделителя "пробел"), так и bb-code и может разбить [a url="http://vk.com/"]123[/a] на "[a" и "url="http://vk.com/"]123[/a]".
Вопрос: как бы нам заставить скрипт понимать bb-code, содержащие проблемы как 1 слово?

Последний раз редактировалось bpystep, 12.04.2012 в 20:13.
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2012, 19:28
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

сделал, но может быть какието другие способы? (если захочется добавить какой-нибудь другой bb-code)
var search = new Array('[a url=','[img url=','\' pos');
var replace = new Array('[a_url=','[img_url=','\'_pos');
for (var i=0; i<search.length; i++) {
	node.value = node.value.replace(search[i],replace[i]);
}
		
var list = node.value.split(" ");
var pos = node.value.indexOf(list[6]);

for (var i=0; i<list.length; i++) {
	if (list[i] == '...[end]') {
		var flag = true;
	}
}
if (!flag) {
	var str1 = node.value.substr(0,pos);
	var str2 = node.value.substr(pos);
	node.value = str1+' ...[end] '+str2;
	for (var j=0; j<search.length; j++) {
		node.value = node.value.replace(replace[j],search[j]);
	}
}
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2012, 19:38
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

не ну разве это нормально, я создал тему. никто в ней не отписался, кроме меня. но в репу я получил -200 очей от кого-то. ну и нахера?

п.с. если вы знаете больше, чем я, дак вы поделитесь опытом, а не занимайтесь херней типа "минусну ка я ему".
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2015, 14:55
Новичок на форуме
Отправить личное сообщение для rtfm_man Посмотреть профиль Найти все сообщения от rtfm_man
 
Регистрация: 29.09.2015
Сообщений: 1

Вот как по мне чуть более элегантный метод, что ли.
String.prototype.addSubStr = function(pos,str){
            var beforeSubStr = this.substring(0,pos);
            var afterSubStr = this.substring(pos,this.length);
            return beforeSubStr+str+afterSubStr;
        }


А если нужно заменить, то объединить с вот таким методом
String.prototype.removeFromTo = function(pos,end){
            var beforeSubStr = this.substring(0,pos);
            var afterSubStr = this.substring(end,this.length);
            return beforeSubStr+afterSubStr;
        }


PS ко всему прочему, по-моему, обращение к строке как к массиву через квадратные скобки не воспринимается старыми браузерами, так что этот метод еще и кроссплатформенней.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт бегущей строки - как сделать строку непрерывной dansury Элементы интерфейса 9 26.01.2013 04:54
как вставить строки в таблицу? Yurik Events/DOM/Window 2 29.02.2012 17:14
вставка текста в начато каждой строки qwertyuiop Общие вопросы Javascript 23 02.08.2011 12:30
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Вставка подстроки в строку в текстовом поле на позицию курсора mastajedi Элементы интерфейса 3 10.11.2009 15:16