我想将此'text {n} text {2} text'
转换为此'text first text second text'
我觉得这很容易:
function setLocales (string, first, second) {
string.replace(/\{(.+?)\/(.+?)\}/g, function (first, label second) {
// What to do here?
}
return string
}
// usage: setLocales(string, 'first', 'second')
但我错了。而且我陷入了功能的中间。
如何完成此功能?
答案 0 :(得分:1)
在MDN site上有一个使用String.prototype.replace函数的示例。你的回调函数参数是错误的;第一个参数是整个匹配的子字符串(由整个正则表达式匹配)。
最简单,最可靠的方法是匹配一个" {something}"在您存储的每次替换的时间和循环中:
public class ViewHolder implements implements View.OnClickListener{
ImageView icon;
TextView title,price;
EditText quantity;
Button add,remove;
public ViewHolder(view) {
//After Initilizing everything
itmView.setOnLongClickListener(this);
}
public void onClick(View v) {
Sting title = v.title.getText().toString();
Sting quantity = v.quantity.getText().toString();
Map<String,String> map = new HashMap<>();
map.put(title, quantity);
contents.add(ab);
}
}
答案 1 :(得分:1)
当replace
定位到第一个查找时,您可以像这样使用它:
function setLocales(s) {
for (var i = 1; i < arguments.length; i++) {
s = s.replace(/{.+?}/, arguments[i]);
}
console.log(s);
}
setLocales('text {n} text {2} text', 'first', 'second');