Как Eric Wendelin упомянул, можно сделать что-то вроде этого:
str1 = "pattern"
var re = new RegExp(str1, "g");
"pattern matching .".replace(re, "regex");
Это уступает "regex matching ."
. Однако это перестанет работать, если str1 будет "."
. Вы ожидали бы, что результат будет "pattern matching regex"
, заменяя период "regex"
, но это окажется...
regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex
Это вызвано тем, что, хотя "."
Строка, в конструкторе RegExp, она все еще интерпретируется как регулярное выражение, означая любой символ неразрыва строки, означая каждый символ в строке. С этой целью следующая функция может быть полезной:
RegExp.quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
Затем можно сделать:
str1 = "."
var re = new RegExp(RegExp.quote(str1), "g");
"pattern matching .".replace(re, "regex");
получение "pattern matching regex"
.
Hibernate генерирует столбцы в алфавитном порядке. Согласно этот пост причина дается как:
Он отсортирован для обеспечения детерминированности заказ через кластеры.
Мы не можем рассчитывать на то, что виртуальная машина вернет методы в том же порядке каждый раз поэтому мы должны были что-то сделать.
Очевидно, что раньше это было в порядке появления, но это изменилось между 3.2.0 GA и 3.2.1 GA.
Я также обнаружил Автоматическое создание схемы создает столбцы в алфавитном порядке порядок составных первичных ключей , и это похоже на вашу проблему. Этот билет касается изменения порядка в первичных ключах, что негативно влияет на производительность индекса.
Для этого нет никакого решения, кроме обходного пути именования столбцов таким образом, чтобы они выходили в правильном порядке (нет, я я не шучу).
DataNucleus разрешает расширение, определяющее позицию для генерации схемы, FWIW.