Я не мог найти ответ. надеюсь, кто-то сможет помочь.

Мне нужно иметь возможность искать числа, такие как "12" и получить только 1 истина в строке с разделителями-запятыми, как:

var str = "1, 13, 112, 12, 1212, 555"

В основном, если у меня есть коды продуктов, и я нахожу 12, я бы хотел вернуть ОДИН «Велосипед» из-за единственного «12». Но я получаю много ложных попаданий с номерами 112, 1212 и т. Д.

Есть идеи, какую функцию или метод я мог бы использовать?

-1
Thonex1234 28 Фев 2018 в 22:22

3 ответа

Лучший ответ

Вы можете разделить строку, а затем Array.includes, чтобы проверить, существует ли значение в массиве или нет.

function check(str, val){
  return str.split(", ").includes(val+"");
}

var str = "1, 13, 112, 12, 1212, 555"

console.log(check(str, 12));
console.log(check(str, 121));
console.log(check(str, 1212));
1
void 28 Фев 2018 в 19:27

Я думаю .include () не поддерживается на листах Google. Но это похоже на работу:

    /**
@customfunction
*/
function AK_CHECK(input){
    var split_cell = input.split(",").indexOf("12");
    if (split_cell > -1){
        return "Bicycle"
        } else {
        return "NO"}
        }
0
Thonex1234 28 Фев 2018 в 20:52

Еще один возможный ответ:

var twelve = /(^| )12(,|$)/;
var s = "1, 13, 112, 12, 1212, 555";
console.log(twelve.test(s)); // true

О регулярном выражении

После вашего комментария позвольте мне немного помочь вам разобраться в первой строке.

/(^| )12(,|$)/ - это регулярное выражение. Регулярное выражение - это последовательность символов, определяющая шаблон поиска. Это одна из функций, встроенных в JavaScript, но она не связана с JavaScript. Другими словами, вы не должны изучать регулярные выражения в области JavaScript, но JavaScript остается хорошим способом экспериментировать с регулярными выражениями. При этом, что /(^| )12(,|$)/ означает?

Два / являются разделителями, указывающими границы выражения. Между / находится само выражение (^| )12(,|$), которое описывает искомый шаблон. Мы можем классифицировать различные символы, участвующие в этом выражении, в две категории:

  • обычные символы (1, 2, , и ),
  • метасимволы ((, ), |, ^ и $).

Обычные символы - это символы без особого значения. Пример :

/cat/.test("cat") // true
/cat/.test("concat") // true

Метасимволы - это символы с особым значением:

  • ^ означает «начало текста»,
  • $ означает «конец текста»,
  • () указывает на подвыражение,
  • | обозначает логическое ИЛИ.

Пример 1, пустой текст:

/^$/.test("") // true
/^$/.test("azerty") // false

Пример 2, точное совпадение:

/^zert$/.test("zert") // true
/^zert$/.test("azerty") // false

Пример 3, альтернативы:

/(az|qw)erty/.test("azerty") // true
/(az|qw)erty/.test("qwerty") // true

Чтобы подвести итог, вернемся к /(^| )12(,|$)/:

(^| )   start of the text or " "
12      then "12"
(,|$)   then "," or end of the text

Таким образом, наш шаблон совпадает со строками, такими как 12, * 12, 12,* или * 12,*, где * означает «ноль или более символов».

Последнее слово, в JavaScript вы можете объявить регулярное выражение, используя ключевое слово new:

var twelve = new RegExp("(^| )12(,|$)");

Это полезно, когда вам нужно динамически изменить некоторую часть выражения:

function newNumberPattern (n) {
  return new RegExp("(^| )" + n + "(,|$)");
}

var eleven = newNumberPattern(11);
var twelve = newNumberPattern(12);

Вот и все, я надеюсь, что это поучительно :-)

0
leaf 1 Мар 2018 в 15:56