Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Разбор строки (https://javascript.ru/forum/dom-window/6245-razbor-stroki.html)

motoroller 20.11.2009 15:32

Спасибо RIM, я просто сделал свой мне понятный уже... там всё работает, единственное проверку никак не могу поставить, если вместо слова куча пробелов, скажите как можно сделать такую проверку ..

Riim 20.11.2009 15:48

String.prototype.trim = function(charList) {
	return this.replace(/^\s+|\s+$/g, '');
};

var str = 'jdhf    ,,,  dshfjk,,,,sah~!@#$%^dksa d<><><>gfhgdf   sd';
var result = str.replace(/[^\-\wа-я]+/gi, ' ').trim().split(' ');
alert(result.join('\r\n'));


так?

motoroller 20.11.2009 15:52

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

Riim 20.11.2009 15:55

Ну так поправь регулярку ;) .

motoroller 20.11.2009 15:56

дык не селён я в них особо

Riim 20.11.2009 15:59

Цитата:

Сообщение от motoroller (Сообщение 35853)
дык не селён я в них особо

http://www.pcre.ru/

А зачем это вообще? Поиск по сайту делаешь?

motoroller 20.11.2009 16:05

Ну короче не поиск я делаю, а картинки к тегам, вообще кому надо:

сделал и всех найденных toLowerCase, и тут же стал показывать length=0
у пробелов :)

motoroller 20.11.2009 16:08

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="/js/jquery.js" type="text/javascript"></script>
<script  type="text/javascript">

Array.prototype.unique = function () {
	var r = new Array();
	o:for(var i = 0, n = this.length; i < n; i++) {
		for(var x = 0, y = r.length; x < y; x++) {
			if(r[x].toLowerCase()==this[i].toLowerCase()) continue o;
		}
		if(this[i].length!=0) r[r.length] = this[i];
	}
	return r;
}

function trim (array) {
    charlist = ' \\s\\xA0';
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');	
	for (var i = 0; i < array.length; i++) array[i]=array[i].replace(re, "");
	return array;
}

  
$(document).ready(function() { 
	$("#button").click(function() {
		var newTags=$("#textfield").val().toLowerCase().split(/,|;/);
		if(newTags=='') return;
		newTags=trim(newTags);
		var existsTags=$("#tagsT").val().split(/,/);
		var tags= existsTags!="" ? existsTags.concat(newTags).unique().sort() : newTags.unique().sort();	
		$("#tagsT").val(tags);
		$("#tags").empty();
		$("#textfield").val("");
		for (var i = 0; i < tags.length; i++) {
			$comma= tags.length-1==i ? "" : ",";
			$("#tags").append($("<span>"+tags[i]+"<img src='/admin/i/delete.png' class='delTag' alt='Удалить тег' />"+$comma+"  </span>"))
			
		}	
		
		});
});

</script>
</head>

<body>


<div id="tags"></div>
<input type="text" name="tagsT" id="tagsT" value="" />
<p>
  <input type="text" name="textfield" id="textfield" value="" />
  <input type="submit" name="button" id="button" value="Submit" />
</p>
</body>
</html>


Если кому надо рабочий пример, может коряво написанный, но работает

Ivan 22.11.2009 01:36

Может кто-нибудь подскажет рабочий пример, чтобы из строки перебирались значения разделяющиеся знаком, а потом подставлялись в другую ?

Don_Julio 24.05.2010 18:21

Здравствуйте!
Помогите, пожалуйста разобраться.

Есть строка:
nLA = "Subj_01&&Subj_02&&Subj_03"

Пробую разобрать "сплитом":
nArr = nLA.split("&&");

Ничего не выходит.

При этом вот такая ф-ция еще вчера(!) работала :blink:

function line2arr (str) {
nArr = str.split ("&&");
alert(nArr.length);
} // END line2arr


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