Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перенос слова по правилам русского языка.
 
 автор: школьник   (14.12.2006 в 19:51)   письмо автору
 
 

Все привет!

Кто нить уже решал задачу переноса слов по правилам русского языка?

пример:

функция ( количество символов в строке, строка )
обрезает строку по правилам русского языка если в строке больше чем заданное количество символов. тоесть если нам надо чтобы в строке было по 15 символов то функция должна сделать со строкой "принадлежащий моему юридическому лицу" примерно следующее

"принадлежащий<br /> моему юридичес-<br>кому лицу"

поставит дефис и перенесет строку, погрешность переноса 1-3 символа.

Если кто уже делал, дайте пожалуйста скриптик -), оч надо в жизни.

   
 
 автор: школьник   (15.12.2006 в 22:15)   письмо автору
 
   для: школьник   (14.12.2006 в 19:51)
 

Ребят, ну помогите решить задачку?

   
 
 автор: 12345   (16.12.2006 в 01:40)   письмо автору
 
   для: школьник   (15.12.2006 в 22:15)
 

Входных данных мало. Какой БД будете пользоваться? (конкретной) Как хранить на клиенте, или где собираетесь вставлять переносы? Очевидно, на клиенте, потому что там узнаётся ширина колонки. Но главное - дайте БД переносов, потом будем думать об алгоритме.

   
 
 автор: школьник   (17.12.2006 в 12:36)   письмо автору
 
   для: 12345   (16.12.2006 в 01:40)
 

Я строю дерево каталогов, мне необходимо чтобы в одной строке выводилось например по 30 символов, перенос по слогам. и т.д.

А какая разница какую базу использовать, или где хранить данные. Я думал про функцию универсальную, два параметра, 1 - сколько в строке символов и строка которая разбивается на строки по количеству символов.

   
 
 автор: RMW   (17.12.2006 в 17:12)   письмо автору
 
   для: школьник   (17.12.2006 в 12:36)
 


<html>
<head>
<script>
window.onload=function()
{
  var div = document.getElementById('myDiv');
  div.innerHTML = f(div.innerHTML,30);
}

var a = [];
function f(t,l)
{
  if(!a.length)makeArray();

  function makeArray()
  {
    a = t.split(/\s/g);
    for(var i in a)a[i] = a[i].split('|');    
  }

  var b = [];
  var r = [];
  for(var i in a)
  {
    for(var j in a[i])
    {
      b.push(a[i][j]);
      if(b.join('').length>=l)
      {
        r.push(b.join('')+'<br>');
        var b = [];
      }
    }
    if(b.length)b.push(' ');
  }
  if(b.length)r.push(b.join(''));
  return r.join('');
}
</script>
</head>
<body>
<div id="myDiv">
Трав|ка зе|ле|не|ет, сол|ныш|ко блес|тит. Лас|точ|ка с вес|ною в гос|ти к нам ле|тит.
</div>
</body>
</html>

   
 
 автор: школьник   (18.12.2006 в 11:32)   письмо автору
 
   для: RMW   (17.12.2006 в 17:12)
 

Круто!

Но здесь слоги, определяют " | ", а как сделать чтобы программа сама знала где сделать перенос, если например сложные слова типа с двумя "нн" и т.д.

Если функция получится оч. хорошей, у меня предложение авторам форума, выложить в "Примеры Javascript" и все смогут использовать.

   
 
 автор: школьник   (18.12.2006 в 13:10)   письмо автору
 
   для: школьник   (14.12.2006 в 19:51)
 

Давайте вернемся к задаче!

   
 
 автор: AlexSol   (18.12.2006 в 13:27)   письмо автору
 
   для: школьник   (18.12.2006 в 13:10)
 

к сожалению javascript не знает правил русского языка, так что только так или может кто-то за очень приличное вознаграждение сможет описать эти правила на языке js.
если делать перенос по словам - то это намного проще.

   
 
 автор: школьник   (18.12.2006 в 14:11)   письмо автору
 
   для: AlexSol   (18.12.2006 в 13:27)
 

Перенос по словам делает браузер, для этого стоит указать только ширину.

Я знаю что это сложная задачка, была бы легкая уже бы давно написал =)

   
 
 автор: 12345   (18.12.2006 в 14:16)   письмо автору
 
   для: AlexSol   (18.12.2006 в 13:27)
 

(Оно может стать не таким приличным, если будет база данных переносов. В и-нете есть бесплатные словари с переносами. Так что, автор: найдите словарь, потом вместе попробуем по нему работать. Подозреваю, что работать будет медленно, да и словарь привести к читаемому в JS виду - надо придумать как.)

Школьник: к сведению, если вы не в курсе, в IE имеется специальный символ мягкого переноса - & shy ; (писать вместе). Но он, конечно, не поможет, если мы его не поставим в нужные места. B в FF не действует, там действительно придётся расставлять дефисы.

   
 
 автор: школьник   (18.12.2006 в 14:46)   письмо автору
 
   для: 12345   (18.12.2006 в 14:16)
 

Да нет, вы в сложную сторону клоните, все намного проще.

Смотрите как,

есть строка "Ответить на сообщение", нужно разбить на строки по 7 символов, что делает прога, она пробегает по строке по символьно, если добежав до 7 символа она не находит пробел, тогда она смотрит что за символ стоит 7 в символе, если это гласная буква то можно переносить, просто вставить "-<br />" после 7 символа, если это согласная буква, тогда двигаемся вперед до гласной и делаем перенос, если двойная согласная то делаем перенос между ними, если пробел на 7 символе то вставим "<br />". Итого мы получаем строку "Ответить<br /> на соо-<br />бщение".

Тоесть это не совсем по правилам русского языка, но как бы так.

   
 
 автор: 12345   (18.12.2006 в 15:14)   письмо автору
 
   для: школьник   (18.12.2006 в 14:46)
 

Нет, такое решение никуда не годится. (Любой читатель решит, что автор неграмотный, поэтому к его словам не стоит серьёзно относиться.)

   
 
 автор: школьник   (19.12.2006 в 16:07)   письмо автору
 
   для: 12345   (18.12.2006 в 15:14)
 

Тоесть если делать такую нужную функцию, то делать сразу серьезно!?

   
 
 автор: школьник   (19.12.2006 в 16:15)   письмо автору
 
   для: 12345   (18.12.2006 в 15:14)
 

Но разве нельзя описать на JS правила переноса слов? Зачем делать базу слов, как правило исключений не так уж и много, и их можно предусмотреть.

   
 
 автор: 12345   (19.12.2006 в 19:53)   письмо автору
 
   для: школьник   (19.12.2006 в 16:15)
 

Ну а кому нужна плохо работающая функция? Лучше уж вообще не делать, а разделять слова пробелом или / / в произвольном месте. (Поступают обычно первым способом.)
Пожалуйста, опишите - будет предмет разговора. (Многие "спасибо" скажут. Я ни разу не слышал о системе, правильно переносящей не по словарю.)

   
 
 автор: RMW   (19.12.2006 в 21:42)   письмо автору
 
   для: школьник   (19.12.2006 в 16:15)
 

Однако.
http://snusmumrik.org.ru/ru/hyph/

   
 
 автор: 12345   (19.12.2006 в 23:35)   письмо автору
 
   для: RMW   (19.12.2006 в 21:42)
 

"Эти люди уже прониклись любовью к красивым текстам" - пишет автор. Как что-то можно назвать красивым с то и дело встречающимися ошибками? Хотя это как раз то, что хотел автор вопроса :) .

   
 
 автор: elenaki   (20.12.2006 в 10:54)   письмо автору
 
   для: 12345   (19.12.2006 в 23:35)
 

По сей день неизвестен браузер, который бы правил-
ьно
обрабатывал мягкие переносы.
=============================================
хихихи. как раз на слове "правильно" перенос неправильный

   
 
 автор: школьник   (20.12.2006 в 01:08)   письмо автору
 
   для: RMW   (19.12.2006 в 21:42)
 

RMW - красавец!

Счас только разбираюсь, но мне кажется - это именно то что надо!

Великое спасибо RMW!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования