2016-05-27 4 views
1

У меня есть строка, как var str = 'Foo faa {{Question14}} {{Question23}}'. Теперь я хочу получить подстроки {{Question14}} и {{Question23}}, выполнив некоторую операцию на str. Цифровая часть является переменной в подстроках str. Мне нужно заменить эти подстроки соответствующими идентификаторами. Как я могу это сделать?как получить подстроки javascript?

ответ

1

Это когда RegEx пригодится.

var str = 'Foo faa {{Question14}} {{Question23}}' 
var pattern = /(\{\{[a-zA-Z0-9]+\}\})/gi; 
var matches = str.match(pattern); 

console.log(matches[0]); //{{Question14}} 
console.log(matches[1]); //{{Question23}} 
+0

Какова цель/gi? Не могли бы вы объяснить? –

+0

@NitinAggarwal '/ g' является глобальным совпадением, а'/i' - игнорировать регистр. – choz

0

попробовать это

var str = 'Foo faa {{Question14}} {{Question23}}'; 
 
var replacements = { 
 
    "{{Question14}}" : "Hello", 
 
    "{{Question23}}" : "Hi", 
 
}; 
 
    var output = str.replace(/{{\w+}}/g, function(match){ return replacements [match] }); 
 
    console.log(output);

1

Вы можете сделать это следующим образом:

var 
 
    str = 'Foo faa {{Question14}} {{Question23}}', 
 
    arr = str.match(/{{Question[0-9]+}}/igm); 
 

 
alert(arr[0]); // {{Question14}} 
 
alert(arr[1]); // {{Question23}}

Заменить матчи с некоторыми идентификаторами:

str.replace(/{{Question([0-9]+)}}/igm, "id=$1"); // "Foo faa id=14 id=23" 

Когда регулярное выражение содержит группы (обозначенные круглых скобки), матчей каждой группы доступны как $ 1 для первой группы, $ 2 второго, и скоро.

Смежные вопросы