Вопрос по html, coldfusion-8, coldfusion, whitespace – Как удалить более одного пробельного символа из HTML?

1

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

Например:

<p> It's interesting that you would try cfsetting, since nothing in it's
documentation would indicate that it would do what you are asking.
Unless of course you were mis-reading what "enableCFoutputOnly" is
supposed to do.


</p>



<p>



It's interesting that you would try cfsetting, since nothing in it's
documentation would indicate that it would do what you are asking.
Unless of course you were mis-reading what "enableCFoutputOnly" is
supposed to do.</p>

Пожалуйста, объясните мне, как удалить из HTML более одного символа пробела.

Ваш Ответ

3   ответа
0

=> http://jsbeautifier.org/

если вы хотите сделать это с помощью кода, то регулярное выражение будет другой вариант

0

<cfscript>
  string function stripCRLFAndMultipleSpaces(required string theString) {
    local.result = trim(rereplace(trim(arguments.theString), "([#Chr(09)#-#Chr(30)#])", " ", "all"));
    local.result = trim(rereplace(local.result, "\s{2,}", " ", "all"));
    return local.result;
  }
</cfscript>
Все мои комментарии к ответу Русса применимы и здесь - это нарушит форматированиеpre тэги и, поскольку он преобразует символы новой строки в пробелы, потенциально может нарушить функциональность JavaScript.
0

ескольких пробельных символов одним пробелом, циклически перебирая результат до тех пор, пока не будет больше нескольких пропусков:

lastTry = "<p>   lots of space    </p>";
nextTry = rereplace(lastTry,"\s\s", " ", "all");
while(nextTry != lastTry) {
  lastTry = nextTry;
  nextTry = REReplace(lastTry,"\s\s", " ", "all");
}

Проверено работает в CF10.

Это очень многословный способ сделать это! Самый быстрый способ, вероятно, это:input.replaceAll('\s\s+',' ')  Или, чтобы избежать замены новой строки пробелами, можно также сделать:input.replaceAll('(\s)\s+','$1') (т. е. уплотнить все пробелы до первого, найденного в каждой цепочке).
re: side note: & quot; здесь все достаточно просто, чтобы нормально работать с CF7 и далее & quot; -- именно так.
Конечно, все это изменит содержимое внутри pre / etc - если такие вещи имеют значение, то правильный способ синтаксического анализа HTML - лучший способ приблизиться к этому, тем более, что есть хороший шанс уже иметь «аккуратный» код. способ справиться именно с этой ситуацией.
примечание стороны: поскольку OP явно обозначил вопрос как CF8, тестирование с CF10 отчасти избыточно (однако, все здесь достаточно просто, чтобы нормально работать с CF7 и далее).
ах, я думаю, что input.replaceAll ('(\ s) \ s +', '$ 1') - лучшее решение. Почему бы не поставить это как отдельный ответ?

Похожие вопросы