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

bohdantheone 14.01.2012 22:23

Выделить последний и символ
 
Подскажите как реализовать выделение цветом последнего и первого символа в тексте.

Livanderiaamarum 15.01.2012 07:38

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

reg = /\s*(\S)(.*)(\S)\s*/
text = text.replace(reg, "<font color='red'>$1</font>$2<font color='red'>$3</font>")//крайние символы $1 $3, середина $2

document.write(text)
</script>
</html>

Pavel M. 15.01.2012 10:05

Цитата:

Сообщение от bohdantheone
Подскажите как реализовать выделение цветом последнего и первого символа в тексте.

по поводу первого, можно использовать css
http://htmlbook.ru/css/first-letter

bohdantheone 15.01.2012 10:48

Livanderiaamarum,
спасибо, как в этих РегЕкспах разобраться=))) Что есть хорошего почитать?

9xakep 15.01.2012 11:55

Гавнокод from 9xakep:
<html>
<script>
text = "trololo"
var str = text.split(' ').join('').split('')
var len = text.split(' ').join('').split('').length
var len2 = text.split(' ').length - 3
var first = 0
var last = len-1
var addText = text.substr(1, len+len2)
document.write("<font color='red'>"+ str[first] +"</font>"+ addText +"<font color='red'>"+ str[last] +"</font>")
</script>
</html>

Gozar 15.01.2012 12:37

<html><body>
<div id="d1" style="color:#fff">Съешь еще этих мягких французских булок да выпей же чаю, жуёба
25утолимоипечали</div>
<script>
text = document.getElementById('d1').innerHTML;

reg = /\s*(\S)(.*)(\S)\s*/
text = text.replace(reg, "<font color='red'>$1</font>$2<font color='red'>$3</font>")//крайние символы $1 $3, середина $2

document.write(text)
</script>
</html>

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

Лучше привязываться к началу и концу текста, а не к совпадению чего-то.

Почитайте Регулярные Выражения Фридл.

Gozar 15.01.2012 13:03

<html><body><style>#d1:first-letter{color:red}</style>
<div id="d1">Съешь еще этих мягких французских булок да выпей же чаю, жуёба
25утолимоипечали</div>
<script>
var text = document.getElementById('d1').innerHTML;
text = text.replace(/([a-zа-яё])$/i, "<font color='red'>$1</font>");
document.getElementById('d1').innerHTML = text;
</script>
</html>


Внутрь класса можно добавить символ, который будет выделен, например следующий выделит точку, если она есть:
[a-zа-яё.]


Такой подход будет работать быстрее, хотя он и смешанный.

Работать будет даже при одном символе в тексте.

9xakep 15.01.2012 13:47

<html><body><style>#d1:first-letter{color:red}</style>
<div id="d1">Съешь еще этих мягких французских булок да выпей же чаю, жуёба
25утолимоипечали23</div>
<script>
var text = document.getElementById('d1').innerHTML;
text = text.replace(/([a-zа-я])$/i, "<font color='red'>$1</font>");
document.getElementById('d1').innerHTML = text;
</script>
</html>

Не будет работать, т.к.: [a-zа-я] ищет только буквы

Gozar 15.01.2012 14:07

9xakep,
Всё будет работать. Не умеешь читать ?
Цитата:

Сообщение от Gozar (Сообщение 150728)
Внутрь класса можно добавить символ, который будет выделен, например следующий выделит точку, если она есть:
[a-zа-яё.]

Добавил ё, оно отдельно в русском языке, хотя я не знаю слов заканчивающихся на ё.

Gozar 15.01.2012 14:16

9xakep,
Ты в своём говнокоде не забудь вырезать переводы строки.

Регуляркой вырезать будешь?! :D

ps: Задача не такая простая как кажется на первый взгляд и зависит от условия:
- откуда берется текст?


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