str.replace(/ +/g, function(match) {
return " " + Array(match.length).join(' ');
});
Это использует версию replace
, которая принимает функцию, чтобы сгенерировать замену в качестве второго параметра и заменяет каждое вхождение 2 или более пространств с одним пробелом, за которым следует соответствующее количество
.
Функция String.prototype.repeat
, но она не поддерживается в IE, поэтому вы можете использовать альтернативный способ генерации последовательности
. Array(match.length).join(' ')
- это короткий способ повторить строку, взятую из this answer, на другой вопрос.
В качестве альтернативы вы можете использовать эту функцию, чтобы выполнить повтор, снова берется из Repeat String вопроса:
function repeat(pattern, count) {
if (count < 1) return '';
var result = '';
while (count > 1) {
if (count & 1) result += pattern;
count >>= 1, pattern += pattern;
}
return result + pattern;
}
Уведомление с Array(n).join
вам не нужно вычесть 1 из длины чтобы получить нужное количество неразрывных пробелов. например Array(3).join(' ')
- " "
, но для других подходов к генерации повторяющейся строки вам понадобится 1 меньше длины совпадения.
Не заменит ли более чем 2 пробела пробелом, за которым следует только один « » вместо того, чтобы заменять каждое пространство * после * первым с помощью « »? – mikej
да, это будет, извините, не заметили, что :((В этом случае мне нужно его отредактировать. Спасибо за головы –
, в этом случае я поеду с таким же кодом, как у вас с кредитами, я надеюсь ты не против –