REGEXP сократить слово по согласной букве
Сделал для своих нужд. Может кому пригодится:
<script language="JavaScript" type="text/javascript"> s='привет мир! тест границ слов - кириллица, 45454 тепло-централь, Производительность/ректификация, л/час.'; function reduction_words(s,lim){ var t = s.split(/[^а-яё\w]+/); for(var i=0; i<t.length; i++) if(t[i].length>lim) s = s.replace(t[i], t[i].replace(t[i].replace(new RegExp('[а-яё\\w]{1,'+lim+'}[^аеёиоуыьъэюяyeuioa]','i'),''),'')+'.'); return s; } document.write(reduction_words(s,7)); //привет мир! тест границ слов - кириллиц., 45454 тепло-централ., Производ./ректифик., л/час. </script> Думаю можно упростить код, но не было времени. |
ваша функция неправильно обработает, например, такую строку:
454542013 __proto__ s='тест границ слов - 454542013 __proto__'; function reduction_words(s,lim){ var t = s.split(/[^а-яё\w]+/); for(var i=0; i<t.length; i++) if(t[i].length>lim) s = s.replace(t[i], t[i].replace(t[i].replace(new RegExp('[а-яё\w]{1,'+lim+'}[^аеёиоуыьъэюяyeuioa]','i'),''),'')+'.'); return s; } alert(reduction_words(s,7)); |
Мой вариант
var str = 'привет мир! Бесперспективный: тест границ слов - кириллица, 454542013 __proto__ тепло-централь, Производительность/ректификация, л/час.' ; function crop(str, lim) { str = str.replace(new RegExp("[а-яёa-z]{"+lim+"}[а-яёa-z]*", "ig"), function(a) { if(a.length==lim||a.length==lim+1) return a ; for(var i=lim-1; i>=0; i--) { var r = new RegExp("^[а-яёa-z]{"+i+"}[^аеёиоуыьъэюяyeuioa]", "i") ; if(r.test(a)) { a = a.substring(0, i+1)+"." ; break ; } ; } ; return a ; }) ; return str ; } ; alert(crop(str, 7)) ; |
мда ....
<script language="JavaScript" type="text/javascript"> var s = 'привет мир! Бесперспективный: карамель тест границ слов - кириллица, 454542013 __proto__ тепло-централь, Производительность/ректификация, л/час.' ; document.write("<br />"+s.replace(/([а-яё]{5,6}[бвгджзклмнпрстФхцчшщ])(?![\sьъ])[а-яё]*/gim,"$1.")) </script> |
Всем спасибо! Особенно рони ;) Я знал что можно упростить и сделать более изящнее.
|
Часовой пояс GMT +3, время: 13:41. |