Значения массива Concat

В PHP существует довольно удобный метод для проверки сочетания «0», «false», «off» как «false» и «1», «on», «true» как == true, который часто игнорируется , Это особенно полезно для разбора аргументов GET / POST:

filter_var( $item['price'], FILTER_VALIDATE_BOOLEAN );

Это не относится к этому случаю использования, но при условии сходства и факта, что это результат поиска, как правило, возникает при задании вопроса о проверке ( string) «0» как false Я думал, что это поможет другим.

http://www.php.net/manual/en/filter.filters.validate.php

1
задан Islam Elshobokshy 18 January 2019 в 15:59
поделиться

4 ответа

Если у вас есть группа захвата ((...)) в регулярном выражении, которое вы передаете .split, захваченный текст возвращается как часть результата. Вот почему у вас есть "1", "2" и т. Д. Между "Item ".

Помимо некоторого варианта решения @Ori Dori , вы также можете решить это с помощью прогнозного утверждения (?=...), которое является не захватывающей конструкцией.

var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = string.split(/(?=Item)/);
console.log(arr);

Это будет работать, разбивая строку непосредственно перед любым появлением текста "Item".


Для более грубого решения без использования регулярных выражений:

var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = [];
var i = string.indexOf('Item', 1);
while (i >= 0) {
  arr.push(string.substr(0, i));
  string = string.substr(i);
  i = string.indexOf('Item', 1);
}
arr.push(string);
console.log(arr);

0
ответ дан p.s.w.g 18 January 2019 в 15:59
поделиться

Примечание: ответ обрабатывает исходный регистр - перед обновлением

Используйте String.match() , чтобы найти последовательность не чисел, которая заканчивается последовательностью числа ( regex101 ):

var string = 'Item 1Item 2Item 3Item 4'
var arr = string.match(/\D+\d+/g)
console.log(arr);

0
ответ дан Ori Drori 18 January 2019 в 15:59
поделиться

Чтобы достичь ожидаемого результата, используйте опцию ниже с заменой, разбиением и нарезкой

  1. Добавьте двойной пробел перед 'I', используя replace
  2. Разбить на двойной пробел, используя split ('' )
  3. удалить первую пустую строку, используя слайс (1)

var str = "Item 1Item 2Item 3Item 4Item NItem N-1"

let arr = str.replace(/\I/g, '  I').split('  ').slice(1);

console.log(arr)

codepen - [111 ] https://codepen.io/nagasai/pen/qLzKwJ?editors=1010

0
ответ дан Naga Sai A 18 January 2019 в 15:59
поделиться

Если ваш elements всегда начинается со слова Item, вы можете сделать что-то подобное, используя split () :

const str = 'Item 1Item 2Item 3Item 4Item N-2Item N-1Item N'
var arr = str.split("I").slice(1).map(x => "I" + x);
console.log(arr);
[1114 ]

Еще лучше, и в качестве альтернативы вы можете сделать это с помощью одного регулярного выражения, используя match ()

const str = 'Item 1Item 2Item 3Item 4Item 999Item N-2Item N-1Item N'
var arr = str.match(/Item\s[1-9|N|-]+/g);
console.log(arr);
[ 1115]

0
ответ дан Shidersz 18 January 2019 в 15:59
поделиться
Другие вопросы по тегам:

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