Найти слово в строке Javascript

1

У меня есть набор строк:

s1 = 'user-1 color-class';
s2 = 'text-class user-1 color-class";
s3 = 'text-class not-user-1 color-class";
s4 = 'not-user-1 color-class";
s5 = 'not-user-1 user-1 color-class";

Я хочу вернуть true или false для всех строк, содержащих слово, начинающееся с player-. То есть, не как часть другого слова, а с самого начала.

Итак, для вышеуказанного

s1 = 'user-1 color-class';  <-- TRUE
s2 = 'text-class user-1 color-class";  <-- TRUE
s3 = 'text-class not-user-1 color-class";  <-- FALSE
s4 = 'not-user-1 color-class";  <-- FALSE
s5 = 'not-user-1 user-1 color-class";  <-- TRUE

Так, например:

if (hasUserClass(string)) {           <-- boolean

Кроме того, как мне получить значение user-X из строки класса?

userClass = getUserClass(string);     <-- 'user-3'

Спасибо

Это то, что я сделал до сих пор:

function getUserClass(element)
{
    if (! element) {
        return false;
    }

    var classes = $(element).attr('class');

    if (classes.search('user-') == -1) {
        return false;
    }

    return classes.match(/player\-\d+/gi)[0];
}


function userHasClass(element)
{
    if (! element) {
        return false;
    }

    var userClass = getUserClass(element);

    return (userClass == active_user.class);
}

Но это не учитывает, должно быть, начало совпадения слова.

  • 0
    что насчет поиска в Google: developer.mozilla.org/fr/docs/Web/JavaScript/Reference/…
  • 2
    s.split(" ").find(function(str) { return str.startsWith("user-"); }); : s.split(" ").find(function(str) { return str.startsWith("user-"); }); ?
Показать ещё 7 комментариев
Теги:

4 ответа

1

Здесь имеется один вкладыш ES6.

s1 = 'user-1 color-class'; //<-- TRUE
s2 = 'text-class user-1 color-class';  //<-- TRUE
s3 = 'text-class not-user-1 color-class';  //<-- FALSE
s4 = 'not-user-1 color-class';  //<-- FALSE
s5 = 'not-user-1 user-1 color-class';  //<-- TRUE

const myTest = words => words.split(" ").some( str => str.startsWith("user-") )

console.log(myTest(s1), myTest(s2) ,myTest(s3), myTest(s4), myTest(s5))
  • 0
    отлично .. ты мастер ...
  • 0
    Пфффф если только. Я хотел бы.
0

Думаю, вы имели в виду, начиная с user-.

txt.split(' ').some((elem) =>  elem.startsWith('user-'));

даст вам то, что вам нужно

0

Просто используйте indexOf. Но почему бы не передать active_user.class напрямую?

var s1 = 'user-1 color-class';
var s2 = 'text-class user-1 color-class';
var s3 = 'text-class not-user-1 color-class';
var s4 = 'not-user-1 color-class';
var s5 = 'not-user-1 user-1 color-class';

var test1 = 'user-';
var test2 = 'user-1'; // effectively active_user.class
var test3 = 'user-2';

function check (pWhat, pAgainst) {
    var w = ' ' + pWhat;
    var a = ' ' + pAgainst;
    return w.indexOf (a) >= 0;
}

console.log("aginst: " + test1);
console.log(s1 + " -> " + check(s1,  test1));
console.log(s2 + " -> " + check(s2,  test1));
console.log(s3 + " -> " + check(s3,  test1));
console.log(s4 + " -> " + check(s4,  test1));
console.log(s5 + " -> " + check(s5,  test1));

console.log("aginst: " + test2);
console.log(s1 + " -> " + check(s1,  test2));
console.log(s2 + " -> " + check(s2,  test2));
console.log(s3 + " -> " + check(s3,  test2));
console.log(s4 + " -> " + check(s4,  test2));
console.log(s5 + " -> " + check(s5,  test2));

console.log("aginst: " + test3);
console.log(s1 + " -> " + check(s1,  test3));
console.log(s2 + " -> " + check(s2,  test3));
console.log(s3 + " -> " + check(s3,  test3));
console.log(s4 + " -> " + check(s4,  test3));
console.log(s5 + " -> " + check(s5,  test3));
-1

https://www.w3schools.com/jsref/jsref_indexof.asp

Взгляните на это.

если вы используете

var str = "Hello world, welcome to the universe.";
var n = str.indexOf("welcome");
var m = str.indexOf("itDoesntExist");

console.log(n)  // prints 13
console.log(m) //  prints -1 since it doesnt exist

позже вы можете использовать с ним инструкцию if.

лайк

if(m === -1) { console.log("it doesnt exist ") };    
  • 0
    Спасибо, но не работает для str = "hellowelcome hi there" it will return true for welcome`, но это не начало слова приветствия.
  • 0
    Таким образом, вы хотите, чтобы он возвращал true, если слово начинается с «player» или только если «player» существует один без каких-либо дополнений?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню