наиболее эффективный способ сохранения лидирующих пробелов в выводе sprintf - PullRequest
1 голос
/ 28 декабря 2011

Учитывая следующий код, который работает:

for (i=0; i<nLinears; i++) {
    for (j=0; j<nLinearPts[i]-1; j++) {
        $wb.upLinearLoad.append('<div>' + sprintf("%5s%8.1f to%7.1f%8.1f"
        ,sLinearSegName[i][j],fLinearPtBA[i][j],fLinearPtBA[i][j+1],fLen)
        .replace(/ /g,"&nbsp;"));
    }
}

Это гарантирует, что при изменении чисел от малых (больше начальных пробелов) к большим (меньше начальных пробелов) интервал между столбцами будет сохраняться. Однако, насколько я понимаю, использование регулярного выражения для .replace неэффективно, и, поскольку у меня есть такая структура во всем приложении, мне нужно, чтобы оно выполнялось как можно быстрее.

Я верю, что jQuery .text () позаботится о моей необходимости, но мне также нужно .append () результат .text (), и я не могу понять, как заставить их работать вместе.

Любые предложения будут с благодарностью.

Ответы [ 3 ]

0 голосов
/ 29 декабря 2011

Вы можете обновить функцию sprintf(), чтобы сначала выводить неразрывные пробелы.

Но вы действительно обнаружили проблему с производительностью, используя регулярное выражение .replace()?Я не думаю, что у тебя будут проблемы.Учитывая, что у вас, кажется, есть табличные данные, почему бы вам не использовать <table>?Для этого и предназначены таблицы.

0 голосов
/ 29 декабря 2011

Я посмотрел на sprintf () и обнаружил, что простое изменение с одним оператором произвело то, что мне было нужно:

pad_character = '&nbsp;';

Благодарю автора реализации sprintf () за использование значимых имен переменных.1004 *

0 голосов
/ 28 декабря 2011

Вы можете поместить их в <pre> элементы вместо многократной замены строки &nbsp;.

Это (обычно) форматирует их шрифтом фиксированной ширины и сохраняет пробелыбез дополнительной работы.<pre> - для предварительно отформатированного текста, что имеет смысл для того, что у вас есть здесь.

Если это не работает идеально, и вам нужны альтернативы, вы можете проверить этот вопрос о том, как использовать предварительноформатированный текст в разных контекстах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...