Создание многострочных строк в JavaScript - PullRequest
2266 голосов
/ 30 апреля 2009

У меня есть следующий код в Ruby. Я хочу преобразовать этот код в JavaScript. что такое эквивалентный код в JS?

text = <<"HERE"
This
Is
A
Multiline
String
HERE

Ответы [ 36 ]

0 голосов
/ 23 ноября 2012

Только что попробовал анонимный ответ и обнаружил, что здесь есть небольшая хитрость, она не работает, если после обратной косой черты есть пробел \
Поэтому следующее решение не работает -

var x = { test:'<?xml version="1.0"?>\ <-- One space here
            <?mso-application progid="Excel.Sheet"?>' 
};

Но когда пространство убрано, оно работает -

var x = { test:'<?xml version="1.0"?>\<-- No space here now
          <?mso-application progid="Excel.Sheet"?>' 
};

alert(x.test);​

Надеюсь, это поможет !!

0 голосов
/ 19 февраля 2013

Это не очень элегантно, но достаточно чисто для меня:

var myString = "First line" + "\n";
var myString = myString + "Second line" + "\n";
var myString = myString + "Third line" + "\n";
0 голосов
/ 09 сентября 2014

Если вы работаете только в Node, вы можете использовать модуль fs для чтения многострочной строки из файла:

var diagram;
var fs = require('fs');
fs.readFile( __dirname + '/diagram.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  diagram = data.toString();
});
0 голосов
/ 07 марта 2013

Это один довольно экономичный подход, по крайней мере, с точки зрения исходного кода:

function s() {
    var args = [],index;
    for (index = 0; index< arguments.length; index++) {
        args.push (arguments [index]);
    }
    return args.join ("\n");
}
console.log (s (
    "This is the first line",
    "and this is the second",
    "finally a third"
));

function s() {return arguments.join ("\n")} 

было бы лучше, если бы свойство "arguments" было правильным массивом.

Вторая версия может использовать "" для объединения, если вы хотите контролировать разрывы строк в очень длинной строке.

0 голосов
/ 02 августа 2013

Я программирую так:

sys = {
    layout: null,
    makeLayout: function (obCLS) {
        this.layout = $('<div />').addClass('editor').appendTo($(obCLS)).append(

            /* Cargador */
            /* @this.layout.find('> div:nth-of-child(1)'); */
            '<div>' +
            '   <p>Seleccione la imagen que desea procesar.</p>' +
            '   <input type="button" value="Seleccionar" class="btn btn-xlarge btn-success" />' +
            '   <span></span>' +
            '</div>' +

            /* Cargador - Progreso */
            /* @this.layout.find('> div:nth-of-child(2)'); */
            '<div>' +
            '   <div>' +
            '       <div></div>' +
            '       <div>' +
            '           <div></div>' +
            '       </div>' +
            '   </div>' +
            '</div>' +

            /* Editor */
            /* @this.layout.find('> div:nth-of-child(3)');
             * @sidebar = this.layout.find('> div:nth-of-child(3) > div > div > div:nth-of-type(1)');
             * @body    = this.layout.find('> div:nth-of-child(3) > div > div > div:nth-of-type(2) > div'); */
            '<div>' +
            '   <div>' +
            '       <div>' +
            '           <div></div>' +
            '           <div>' +
            '               <div></div>' +
            '           </div>' +
            '       </div>' +
            '   </div>' +
            '</div>'
        );
    }
}

sys.makeLayout('#div');
0 голосов
/ 14 ноября 2013

Я нашел более элегантное решение, возможно, немного не связанное с темой, потому что оно использует PHP, но я уверен, что оно будет полезным и привлекательным * для некоторых из вас ...

этот код JavaScript должен оставаться внутри тегов сценария

var html=<?php echo json_encode("

        <div class=container>
            <div class=area1>
                xxx
            </div>
            <div class=area2>
                ".$someVar."
            </div>
        </div>

"); ?>

в вашем html вы увидите что-то вроде

var html="\r\n\r\n\t\t\t<div class=container>\r\n\t\t\t\t<div class=area1>\r\n\t\t\t\t\txxx\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=area2>\r\n\t\t\t\t\t44\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\r\n\t\t";  


и et voilà! , он обеспечивает читабельность кода в вашем файле.

pD: в этом примере используется функция PHP json_encode (), но, безусловно, существуют эквиваленты функций для языков ASP, Ruby и JSP.

pD: однако, у этого решения есть и свои ограничения, одним из которых является то, что вы не можете использовать переменные javascript внутри инкапсулированного кода.

...