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, время: 19:02. |