Если вы пытаетесь убедиться, что строка, которую вы ищете, не будет существовать даже после замены, вам нужно использовать цикл.
Например:
var str = 'test aabcbc';
str = str.replace(/abc/g, '');
Когда вы закончите, вы все равно будете иметь «test abc»!
. Простейшим циклом для этого было бы:
var str = 'test aabcbc';
while (str != str.replace(/abc/g, '')){
str.replace(/abc/g, '');
}
Но это выполняет замену дважды для каждого цикла. Возможно (рискуя проголосовать), которые могут быть объединены для немного более эффективной, но менее читаемой формы:
var str = 'test aabcbc';
while (str != (str = str.replace(/abc/g, ''))){}
// alert(str); alerts 'test '!
Это может быть особенно полезно при поиске повторяющихся строк. Например, если у нас есть «a ,,, b», и мы хотим удалить все повторяющиеся запятые. [В этом случае можно было бы сделать .replace (/, + / g, ','), но в какой-то момент регулярное выражение становится сложным и достаточно медленным, чтобы зацикливаться.]
Царство и Sqlite во многих аспектах совершенно разные.
Вот две статьи, которые вы могли бы изучить, чтобы понять основные отличия:
Сравнение свойств системы с vm SQLite 5 причин, по которым вам следует выбирать область над CoreData / SQLite
Как было предложено Славией в комментариях, взгляните также на эту статью для сравнения нескольких ORM, включая Realm.
Я разработчик команды Xamarin в Realm, поэтому я могу рассказать вам немного больше о том, как работает продукт Xamarin.
В Realm есть ядро C ++, которое является общим для всех продуктов. Вот почему мы выпускаем для каждой платформы , а не только для языка - нам нужно включить собственное ядро. Несмотря на то, что мы поддерживаем сборку PCL вашего кода, у нас нет библиотеки PCL как таковой - во время сборки ваш код PCL будет ссылаться на соответствующую библиотеку IOS или Android.
Это означает, что, например, продукт C # обеспечивает LINQ, для запросов и использования объектов C # в качестве средства определения модели данных. Во время сборки генератор кода Fody запускается, чтобы добавить средства определения свойств и геттеры, чтобы ваши объекты C # напрямую взаимодействовали с основными данными на C ++. В отличие от обычных продуктов ORM, нет копий данных из базы данных в буферы, а затем снова в ваши объекты.
Данные в области данных отображаются в памяти, поэтому они переходят непосредственно из вашего кода в хранилище. Мы генерируем методы доступа, которые заменяют автотестеры getters и seters.
Мы используем термин zero-copy , чтобы описать это. Напротив, большинство других систем будут иметь объекты C #, которые имеют поля, поддерживающие их свойства. Эти объекты часто заполняются копированием из буфера SQLite, который был прочитан из хранилища disk . Это два уровня копирования.