如何用字符串替换两个花括号?

时间:2017-11-06 08:17:39

标签: javascript replace

我想将此'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')

但我错了。而且我陷入了功能的中间。

如何完成此功能?

2 个答案:

答案 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');