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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> большую строку разбить на маленькие 
V
    Опции темы
Samotnik
Дата 14.1.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



привет, подскажите пажалста smile
Есть строка 
VeryVeryLongStringInTheWorldWowSoSuschLongStringYYYyyeeeeahVeryLong
нужно из нее сделать маленькие строчечки в столбик по где-то 15 символов smile т.е. грубо говоря, нужно подобовлять в эту строку через каждые 15 символов  \n наверное smile 
PM MAIL   Вверх
Samotnik
Дата 14.1.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



сделал так smile 
Может другие варианты будут ? 
Код

 var count = 0;
    var digital = 18;
    var finalName = "";
    if (imageName.length <= digital) {
        return imageName;
    }
    else {
        var countTo = imageName.length % digital != 0 ? imageName.length % digital + 1 : imageName.length % digital;
        for (var i = 0; i < countTo; i++) {
            finalName += imageName.substr(count, digital) + "\n";
            count += digital;
        }
        return finalName;
    }

где, imageName - та большущая строка smile 
Может не верный алгоритм ?  Но вродь пока работает smile 
PM MAIL   Вверх
Amphiluke
Дата 14.1.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Чтобы не заботиться о длине копируемого фрагмента, вместо substr можно пользоваться slice.
Код

    var str = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345";
    var charsPerLine = 18;
    var lineCount = Math.ceil(str.length / charsPerLine);
    var lines = "";
    for (var i = 0; i < lineCount; i++) {
        lines += str.slice(i * charsPerLine, i * charsPerLine + charsPerLine) + "\n";
    }
    alert(lines);


Добавлено через 5 минут и 51 секунду
Впрочем, всё одно…
PM   Вверх
12345c
Дата 15.1.2010, 12:07 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Можно по-разному, но самое краткое и очевидное, видимо
Код

imageName = imageName.replace(/(.{15})/g, "$1\n");

(если столбик html, то <br> вместо \n; если массив для дальнейших действий, то imageName.match(/(.{15})/g) )


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Samotnik
Дата 15.1.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



12345c,  smile  пасибо круто smile  
и цикл не нужен smile

Добавлено через 9 минут
12345c, а как вместо 15   переменную подставить ? 
Код

 this.digital = 17;
    if (imageName.length <= this.digital) {
        return imageName;
    }
    else return imageName.replace(/(.{this.digital})/g, "$1\n");

вот так не работает (( 
PM MAIL   Вверх
12345c
Дата 15.1.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Код

.replace(RegExp("(.{"+this.digital+"})","g"), "$1\n")



--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Samotnik
Дата 15.1.2010, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



12345c, круто конечно, спасибо. Обьясни пажалста smile  Как это и почему работает ? 
PM MAIL   Вверх
12345c
Дата 15.1.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



или то, что выше, в 1 строчку

Код

return imageName.replace(RegExp("(.{"+Math.min(this.digital, imageName.length+1)+"})","g"), "$1\n");


Добавлено через 1 минуту и 2 секунды
Так документацию по рег.выражениям читайте. Полезно знать.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Samotnik
Дата 15.1.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



12345c, хорошо, спасибо. Сейчас, строку в 100 символов оно выводит по 20 символов, т.е. в 5 строк. 
А, если, мне нужно это ограничить ? И вывести, скажем 2 строки, а остальное просто дописать ...
 Есть такое решение ? 
PM MAIL   Вверх
12345c
Дата 15.1.2010, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Цитата(Samotnik @  15.1.2010,  14:24 Найти цитируемый пост)
а остальное просто дописать
кто будет дописывать? smile Мы же о скриптах говорим? Если дописываемый текст в s, то можно тем же регекспом обработать дальше.


Код

return imageName.replace(RegExp("(.{"+Math.min(this.digital, imageName.length+1)+"})","g"), "$1\n")
  .replace(/(.{42}).*/, "$1<!replaced!>").replace("<!replaced!>$", s);

 //последнее - на случай, если $1 будет в тексте s, иначе просто .replace(/(.{42}).*/, "$1"+s)


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Samotnik
Дата 15.1.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



12345c,  а что  такое  s ?

Добавлено через 3 минуты и 14 секунд
и еще, мне колличество строк нужно задавать константой smile В самом начле файла.  Ну т.е. оно в перспективе будет выставлятся в настройках приложения. А сейчас просто пока для работы нужно выставлять константой в самом коде.

Добавлено через 10 минут и 12 секунд
не работает. Пишет, что s is not defined
PM MAIL   Вверх
12345c
Дата 15.1.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Цитата(12345c @  15.1.2010,  14:37 Найти цитируемый пост)
Если дописываемый текст в s, то 
 s - дописываемый текст.



--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Samotnik
Дата 15.1.2010, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



12345c, да, я уже разобрался, спасибо, а подскажи пажалста как вот сюда
Код

.replace(/(.{42}).*/, "$1<!replaced!>")

вставить переменную, вместо числа 42 ?   smile

Добавлено через 13 минут и 50 секунд
Код

var  test = 75;
.replace(/(.{test}).*/, "$1<!replaced!>")

не работает  smile 

Это сообщение отредактировал(а) Samotnik - 15.1.2010, 19:20
PM MAIL   Вверх
12345c
Дата 15.1.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Samotnik, ну вы что, совсем думать не умеете? smile 42  - это 2 по 20 + 2 символа переносов строки.

... А понял, вопрос тоже от незнания объекта RegExp.
http://inf.tltsu.ru/res/strogov/books/js/J...t/RegExpJS.html
Цитата

Функция конструктора используется так:

new RegExp("pattern"[, "flags"])

Параметры:

pattern - Текст регулярного выражения.

flags - Флаг, если специфицирован, может иметь следующие значения в любом сочетании:

    * g: глобальная подстановка
    * i: игнорировать регистр
    * m: подставлять на нескольких строках

Заметьте, что параметры литерального формата не используют кавычек для обозначения строк, а параметры функции конструктора - используют кавычки. Итак, следующие выражения создают одно и то же регулярное выражение:

/ab+c/i
new RegExp("ab+c", "i")
(Общий совет такой: видите в ответе или примере незнакомое, но важное слово (RegExp) - ищИте его в инете вместе с контекстом (javascript). Через 2 минуты все объяснения под рукой.)

Т.е.
Код

.replace(RegExp("(.{" + nStrok*21 + "}).*"), "$1<!replaced!>")



--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Samotnik
Дата 16.1.2010, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



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


 




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


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

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