Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выделить последний и символ (https://javascript.ru/forum/misc/24816-vydelit-poslednijj-i-simvol.html)

Livanderiaamarum 15.01.2012 15:43

<div id="d1">Съешь еще этих мягких французских булок да выпей же чаю, жуёба
3
25утолимоипечали</div>

<script>
var text = document.getElementById('d1');
text.innerHTML = text.innerHTML.replace(/^\s|\s$/g, '').replace(/^.|.$/g, '<span style="color:red;">$&</span>');
</script>


что ты сделал с моими пробелами)?

monolithed 15.01.2012 15:44

Цитата:

Сообщение от Livanderiaamarum
И в чем же там лексический анализ?

Лексический анализ

Цитата:

Сообщение от Livanderiaamarum
что ты сделал с моими пробелами)?

опечатался, поправил

Gozar 15.01.2012 16:11

Цитата:

Сообщение от monolithed (Сообщение 150767)
Немного не спортивно, но как-то так:

<p>&nbsp;   text   &nbsp;</p>
<p id="text">&nbsp;   text   &nbsp;</p>

<script>
var text = document.getElementById('text');
text.innerHTML = text.innerHTML.replace(/^\s|\s$/g, '').replace(/^.|.$/g, '<span style="color:red;">$&</span>');
</script>

Можно забить, но существуют ещё &nbsp;

nerv_ 15.01.2012 16:12

еще такой вариант
<p> 	Duis te feugifacilisi 	</p>
<script type="text/javascript">
	with(document.getElementsByTagName("p")[0]) {
		var x = "<span style=\"color:green\">$&</span>";
		innerHTML = innerHTML.replace(/\S(?=\s*$)/, x).replace(/\S/, x);
	}
</script>

Gozar 15.01.2012 16:15

<p> 	D 	</p>
<script type="text/javascript">
	with(document.getElementsByTagName("p")[0]) {
		var x = "<span style=\"color:green\">$&</span>";
		innerHTML = innerHTML.replace(/\S(?=\s*$)/, x).replace(/\S/, x);
	}
</script>

Два реплейса подряд делать не стоит.

nerv_ 15.01.2012 16:29

Gozar, спасибо, понял. Вроде как исправил, только один момент мне остается не ясным: куда деваются пробелы и знаки табуляции в начале и конце строки?) Ясно IE шутки шутит) Собственно, какая разница как будет захватывать спан с пробелами или нет, если на странице это все равно не заметно (в данном случае)?
<p> 	   Duis te feugifacilisi    	</p>
<script type="text/javascript">
	with(document.getElementsByTagName("p")[0]) {
		innerHTML = innerHTML.replace(/^\s*(\S)|(\S)\s*$/g, function(f1, f2, f3) {
			return "<span style='color:green'>" + (f3 || f2 || f1) + "</span>";
		});
		alert("!" + innerHTML + "!");
	}
</script>

Ну как-то так...

monolithed 15.01.2012 16:37

Цитата:

Сообщение от nerv_
куда деваются пробелы и знаки табуляции в начале и конце строки?

заменяются

monolithed 15.01.2012 16:46

Цитата:

Сообщение от Gozar
но существуют ещё &nbsp;

Точно.
<p id="text">&nbsp;  &nbsp;   text &nbsp;  &nbsp; </p>

<script>
var text = document.getElementById('text');
    text.innerHTML = text.innerHTML.replace(/^(&nbsp;|\s)+|(&nbsp;|\s)+$/g, '').replace(/^.|.$/g, '<span style="color:red;">$&</span>');
</script>

nerv_ 15.01.2012 16:47

Цитата:

Сообщение от monolithed
заменяются

спасибо, но я не об этом. Я в своем примере (кот. был) брал в аргументы функции (допустим) первый символ и стоящие перед ним пробелы. А IE в отладчике показывал только этот символ, без всего остального.

Gozar 15.01.2012 17:01

Цитата:

Сообщение от monolithed (Сообщение 150791)
replace(/^(&nbsp;|\s)+|(&nbsp;|\s)+$/g, '');

Лучше не удалять, а заменять на пробелы, более правильно что ли.

В конечном счёте всё сведется к какой-нибудь реге в 50-150 символов :D


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