Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анализ текста в JavaScript 
:(
    Опции темы
Гость_Mik
Дата 22.6.2005, 01:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть содержание вида:

1. Крутое изделие.
2. Очень крутое изделие.
2.1 С правым выкрутасом.
2.2 С левым выкрутасом.
3. Супер крутое изделие.
3.1 С зелёным наворотом.
3.1.1 В наклонную полоску.
3.1.2 В ромбик.
3.2 С красным наворотом.
3.2.1 В наклонную полоску.
3.2.2 В ромбик.
3.2.3 В кружочек.

Считал его в массив:
var spisok=new Array()
spisok[1]=new Array(["1","Крутое изделие"])
spisok[2]=new Array(["2","Очень крутое изделие"])
spisok[3]=new Array(["2.1","С правым выкрутасом"])
spisok[4]=new Array(["2.2","С левым выкрутасом"])
и т.д.

Теперь хочу по необходимости извлекать из него данные форматируя в зависимости от количества точек в первом поле каждой записи.
1. Крутое изделие.
2. Очень крутое изделие.
2.1 С правым выкрутасом.

Проблема: как подсчитать количество точек в тексте?
Сопутствующие вопросы: Есть более простое решение проблемы? Есть готовые скрипты?
  Вверх
Guest
Дата 22.6.2005, 01:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Upssss...
Должно быть так:
1
2
2.1
2.2
2.2.1
2.2.2
  Вверх
Sardar
Дата 22.6.2005, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Первый аргумент дели split'ом на точки, считай сколько получилось кусочков. Вот пример, посложнее smile

Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head></head>
<body>
<pre id="test">
1 Крутое изделие
Описание какого то крутого изделия.

 2.1 Очень крутое изделие
Описание очень крутого изделия

2.2.1 С правым выкрутасом.
Мощный правый выкрутас
</pre>
<div id="out" style="border: solid 1px navy"></div>
<script type="text/javascript">
<!--

function format(str) {
  return str.replace(/^\s*([0-9]+(?:\.[0-9]+)*).+$/gm, function(r, f){
    switch(f.split(".").length) {
      case 1: return "<b>"+r+"</b>";
      case 2: return "<i><u>"+r+"</u></i>";
      case 3: return "<i>"+r+"</i>";
      default: return r;
    }
  }).replace(/\n/g,"<br>");
}
document.getElementById("out").innerHTML=format(document.getElementById("test").innerHTML);

//-->
</script>

</body>
</html>



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 23.6.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Гость_Mik, регистрируйтесь у нас smile



Это сообщение отредактировал(а) Aliance - 23.6.2005, 11:51
PM MAIL WWW ICQ Skype   Вверх
Гость_Mik
Дата 25.6.2005, 03:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Sardar : Спасибо за ответ. "str.replace(/^\s*([0-9]+(?:\.[0-9]+)*).+$/gm" - Это круто. smile И непонятно. smile Видимо мне ещё долго придтёся колупать литературу чтобы понять что тут написано. Пока что решил проблему влоб: вручную разбросал подпункты по дополнительным полям массива. И делаю выборку по этим полям. Может и не красиво, но работает. smile
А есть ли в JavaScript указатели и списки? В литературе я этого не нашел.

Aliance : От меня пока кроме дурных вопросов на форуме пользы мало. Поэтому и не регистрируюсь. smile
  Вверх
Ciber SLasH
Дата 25.6.2005, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Почитай литературу в сети по регулярным выражениям.
Для начала здесь: http://wdh.suncloud.ru/js05.htm#ref35
PM   Вверх
Sardar
Дата 25.6.2005, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Это круто. smile И непонятно.

Рег ищет строки типа: 1.2 это текст и выбирает 1.2 от туда smile
У тебя они в отдельной ячейке массива, так что этот рег не нужен.

Далее split'ом делим на точки и считаем сколько кусочков в получившимся массиве, отсюда через switch форматируем строку.


Цитата
А есть ли в JavaScript указатели и списки? В литературе я этого не нашел.

Указателей как в C нет, но есть ссылки на обьекты. Всё в точности как в Java, примитивы храняться значением, обьекты(функции тоже обьекты) храняться ссылками. Открой любой учебник.

Списки это массивы, например:
Код
var a=[
 "элемент 1", "элемент 2", /* просто элементы */
  ["под элемент 1", "под элемент 2"],  /*под массив */
  5466, window /*хранить можно что угодно */
];

Открой любой учебник smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.