powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript: string.replace - не происходит замена
8 сообщений из 8, страница 1 из 1
JavaScript: string.replace - не происходит замена
    #38500751
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  var sql = 'drop view if exists $1;' + 
  	'create view $1 with (security_barrier = true) as ' +
  	'SELECT ' +
		'	$2.*, $3 ' +
		'FROM ' +
		'  $2 ' +
		'  join $4 using(id)'
        .replace('$1', 'viewName')
        .replace('$2', 'parent_name')
        .replace('$3', 'field_names')
        .replace('$4', 'tableName');



Не производит замены - элементы $n так и остаются в исходной строке.
Не пойму что тут не так
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38500827
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spНе пойму что тут не так
Как вариант...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var sql = 'drop view if exists $1;' + 
	'create view $1 with (security_barrier = true) as ' +
	'SELECT ' +
	'	$2.*, $3 ' +
	'FROM ' +
	'  $2 ' +
	'  join $4 using(id)';
alert(sql.replace(/\$1/g, 'viewName')
	.replace(/\$2/g, 'parent_name')
	.replace(/\$3/g, 'field_names')
	.replace(/\$4/g, 'tableName')
);
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38500898
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp, замена не происходит по двум причинам: 1) из-за приоритета операций функция replace вызывается на только на последней части строки. Исправить можно разделив объявление переменной и замену или добавив скобки. 2) replace заменяет только первое вхождение строки. Чтобы заменялись все нужно передать регялярное выражение с флагом g.

Твой код можно записать так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var sql = ('drop view if exists $1;' + 
  	'create view $1 with (security_barrier = true) as ' +
  	'SELECT ' +
		'	$2.*, $3 ' +
		'FROM ' +
		'  $2 ' +
		'  join $4 using(id)')
        .replace(/\$1/g, 'viewName')
        .replace(/\$2/g, 'parent_name')
        .replace(/\$3/g, 'field_names')
        .replace(/\$4/g, 'tableName');
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38500947
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

Спасибо, об этом как-то нигде не упоминается явно.
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38500967
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел в виду, что выражение надо брать в скобки - я всегда считал что интерпретатор достаточно умный чтобы понять что операция сложения строк более приоритетная
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38501010
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp , все равно без опции "g" будет не полная замена...
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38501016
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp, оператор . имеет более высокий приоритет чем + так что интерпретатор все правильно делает.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
...
Рейтинг: 0 / 0
JavaScript: string.replace - не происходит замена
    #38502905
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

да я понял свою ошибку, спасибо
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript: string.replace - не происходит замена
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]