Regex для замены нескольких пробелов одним пробелом

Формат YYYY-MM-DD недвусмыслен, что означает, что SQL Server не будет путать месяц и день при преобразовании строкового значения в DATETIME. (Я никогда не испытывал проблемы с неявным преобразованием, используя этот формат, используя четырехзначный год.)

«Самый безопасный» (и наиболее удобный) способ хранения значений даты в SQL Server - использовать DATETIME datatype.

Используйте функцию CONVERT для явного указания форматов ввода и вывода при преобразовании между DATETIME и строками.

Документация по SQL Server 2005 в стиле CONVERT :

http://msdn.microsoft.com/en-us/library/ms187928 (SQL.90) .aspx

Чтобы преобразовать строковое представление в datatype DATETIME:

select CONVERT(datetime, '2009-06-03', 20)

Первым аргументом является тип данных для преобразования в, второй аргумент - это преобразованное выражение, третьим аргументом является стиль .

( style 20 is ODBC Канонический формат = 'YYYY-MM-DD HH:MI:SS' (24-часовой режим)


[FOLLOWUP]

Чтобы преобразовать выражение DATETIME (например, getdate () в VARCHAR в формате 'YYYY-MM-DD':

select CONVERT(varchar(10), getdate(), 20)

Обратите внимание, что указание varchar (10) дает вам только первые 10 ch (f15)

[/ FOLLOWUP]


Что касается форматов по умолчанию, это будет исследование. Мы избегаем проблем, вызванных форматами по умолчанию, определяя форматы.

405
задан TylerH 3 May 2016 в 16:14
поделиться

7 ответов

Учитывая, что вы также хотите закрывать вкладки, новые строки и т.д., просто замените \s\s+ на '':

string = string.replace(/\s\s+/g, ' ');

Если вы действительно хотите закрыть только пробелы (а не закладки, новые строки и т.д.), сделайте это:

string = string.replace(/  +/g, ' ');
834
ответ дан 22 November 2019 в 23:05
поделиться
var string = "The dog      has a long   tail, and it     is RED!";
var replaced = string.replace(/ +/g, " ");

Или если вы также хотите заменить табуляции:

var replaced = string.replace(/\s+/g, " ");
0
ответ дан 22 November 2019 в 23:05
поделиться
var myregexp = new RegExp(/ {2,}/g);

str = str.replace(myregexp,' ');
.
0
ответ дан 22 November 2019 в 23:05
поделиться

Также возможно:

str.replace( /\s+/g, ' ' )
4
ответ дан 22 November 2019 в 23:05
поделиться

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

"The      dog        has a long tail,      and it is RED!".replace(/\s\s+/g, ' ')

"The dog has a long tail, and it is RED!"

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

"The      dog        has a long tail,      and it is RED!".replace(/  +/g, ' ')

"The dog has a long tail, and it is RED!"

Альтернативный метод:

"The      dog        has a long tail,      and it is RED!".replace(/ {2,}/g, ' ')
"The dog has a long tail, and it is RED!"

Я не использовал /\s+/ сам по себе, так как он заменяет пробелы, которые многократно занимают 1 символ, и может быть менее эффективным, так как он нацелен на большее, чем необходимо.

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

Также, если вы собираетесь делать замену строки, не забудьте переназначить переменную/свойство на ее собственную замену, например:

var string = 'foo'
string = string.replace('foo', '')

Используя jQuery. prototype.text:

var el = $('span:eq(0)');
el.text( el.text().replace(/\d+/, '') )
16
ответ дан 22 November 2019 в 23:05
поделиться
var str = "The      dog        has a long tail,      and it is RED!";
str = str.replace(/ {2,}/g,' ');

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

str = str.replace(/\s{2,}/g,' ');
43
ответ дан 22 November 2019 в 23:05
поделиться

Так как вы, кажется, заинтересованы в исполнении, я профилировал их с помощью поджигателя. Вот результаты, которые я получил:

str.replace( /  +/g, ' ' )       ->  380ms
str.replace( /\s\s+/g, ' ' )     ->  390ms
str.replace( / {2,}/g, ' ' )     ->  470ms
str.replace( / +/g, ' ' )        ->  790ms
str.replace( / +(?= )/g, ' ')    -> 3250ms

Это на Firefox, работает 100k замена строк.

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

(Также обратите внимание, что панель инструментов разработчика в IE 8 имеет встроенный профилировщик - возможно, стоит проверить, какова производительность в IE).

155
ответ дан 22 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

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