我需要抓一些介于{}之间的文字 但我们同时有3种语言
f.e {:en}资源列表{:} {:ru}СписокРесурсов{:} {:uk}СписокРесурсів{:}
因此,如果我们现在有英文版,我们需要显示{:en}之间的文字{:}
答案 0 :(得分:0)
不需要jQuery。使用正则表达式
var str = "{:en}Resources List{:}{:ru}Список Ресурсов{:}{:uk}Список Ресурсів{:}";
var regex = new RegExp("{:en}([^{]*){:}"); // english
var match = str.match(regex);
console.log(match[1]); // "Resources List"
答案 1 :(得分:0)
为什么不使用普通的旧js
var langs = "{:en}Resources List{:}{:ru}Список Ресурсов{:}{:uk}Список Ресурсів{:}";
var languageTranslations = langs.split('{:}');
languageTranslations.pop(); // this will remove the last empty string element
上面的代码将产生如下数组:
["{:en}Resources List", "{:ru}Список Ресурсов", "{:uk}Список Ресурсів"]
现在你可以像
一样轻松解析每一个languageTranslations.map(function(item){
var firstIndexOf = item.indexOf('}');
var translation = item.substr(firstIndexOf +1 );
var language = item.substr(2,firstIndexOf -2);
return { text : translation , language : language };
});
上面的代码会产生这样的结果:
[{"text":"Resources List","language":"en"},{"text":"Список
Ресурсов","language":"ru"},{"text":"Список Ресурсів","language":"uk"}]
这种解析方法的缺点是你必须确保你的" {:}"分隔符不在您的翻译中。