удалите нежелательные запятые в JavaScript

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

Абсолютно. Кроме того, не используя.Dispose () метод на доступных объектах в надлежащих случаях может вызвать утечки мадам. Самый легкий способ сделать это с блоком использования, потому что это автоматически выполняет.Dispose () в конце:

StreamReader sr;
using(sr = new StreamReader("somefile.txt"))
{
    //do some stuff
}

И если Вы создаете класс, который использует неуправляемые объекты, если Вы не реализуете IDisposable правильно, Вы могли бы вызывать утечки памяти для пользователей своего класса.

6
задан p.campbell 22 September 2010 в 16:09
поделиться

6 ответов

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

str.replace(/^[,\s]+|[,\s]+$/g, '').replace(/,[,\s]*,/g, ',');

Обратите внимание на использование модификатора 'g' для глобальной замены.

17
ответ дан 8 December 2019 в 02:46
поделиться

Вам понадобится это:

s = s.replace(/[,\s]{2,}/,""); //Removes double or more commas / spaces
s = s.replace(/^,*/,""); //Removes all commas from the beginning
s = s.replace(/,*$/,""); //Removes all commas from the end

РЕДАКТИРОВАТЬ: Внесены все изменения - теперь должно работать.

6
ответ дан 8 December 2019 в 02:46
поделиться

Мое мнение:

var cleanStr = str.replace(/^[\s,]+/,"")
                  .replace(/[\s,]+$/,"")
                  .replace(/\s*,+\s*(,+\s*)*/g,",")

Этот будет работать с Opera, Internet Explorer, чем угодно

На самом деле протестировал этот последний, и он работает!

4
ответ дан 8 December 2019 в 02:46
поделиться

Что вам нужно сделать, так это заменить все группы «пробел и запятая» одной запятой, а затем удалить запятые в начале и в конце:

trimCommas = function(str) {
    str = str.replace(/[,\s]*,[,\s]*/g, ",");
    str = str.replace(/^,/, "");
    str = str.replace(/,$/, "");
    return str;
}

Первая заменяет каждую последовательность белого пробел и запятые с одной запятой, если там есть хотя бы одна запятая. Это обрабатывает крайний регистр, оставленный в комментариях для "Internet Explorer".

Второй и третий избавляются от запятой в начале и конце строки, где это необходимо.

Вы также можете добавить (в конец):

str = str.replace(/[\s]+/, " ");

, чтобы свернуть несколько пробелов до одного пробела и

str = str.replace(/,/g, ", ");

, если вы хотите, чтобы они были красиво отформатированы (пробел после каждой запятой).

Более обобщенным решением было бы передать параметры, указывающие поведение:

  • Передача true для collapse сворачивает пробелы внутри раздела (раздел определяется как символы между запятыми).
  • Передается true для addSpace будет использовать "," для разделения разделов, а не только "," самостоятельно.

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

trimCommas = function(str,collapse,addspace) {
    str = str.replace(/[,\s]*,[,\s]*/g, ",").replace(/^,/, "").replace(/,$/, "");
    if (collapse) {
        str = str.replace(/[\s]+/, " ");
    }
    if (addspace) {
        str = str.replace(/,/g, ", ");
    }
    return str;
}
3
ответ дан 8 December 2019 в 02:46
поделиться

Первый эхо-запрос в Google для "Обрезки Javascript": http://www.somacon.com/p355.php . Кажется, вы реализовали это с помощью запятых, и я не понимаю, почему это может быть проблемой (хотя вы ускользнули во втором, а не в первом).

1
ответ дан 8 December 2019 в 02:46
поделиться

match () - гораздо лучший инструмент для этого, чем replace ()

 str  = "    aa,   bb,,   cc  , dd,,,";
 newStr = str.match(/[^\s,]+/g).join(",")
 alert("[" + newStr + "]")
0
ответ дан 8 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

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