jQuery在符号“{”“}”之前解析字符串(网站上的不同语言)

时间:2017-07-06 08:25:04

标签: javascript jquery parsing text

我需要抓一些介于{}之间的文字 但我们同时有3种语言

f.e {:en}资源列表{:} {:ru}СписокРесурсов{:} {:uk}СписокРесурсів{:}

因此,如果我们现在有英文版,我们需要显示{:en}之间的文字{:}

2 个答案:

答案 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"}]

这种解析方法的缺点是你必须确保你的" {:}"分隔符不在您的翻译中。