javascript - 如何转换具有特定标识符的字符串?

标签 javascript reactjs

Input: 'text __city__ text __city__ text __city__'

Output: 'text <i>city</i> text <i>city</i> text <i>city</i>'

该特征的结果被传递到 dangerouslySetInnerHTML

这个组件是

<div dangerouslySetInnerHTML={{__html: content.replace(/(?:\r\n|\r|\n)/g, '<br />')}}></div>

针对此问题 ( link )。

我的功能是

const transformText = (text) => {
  const tmp = text.split('__');
  var res = '';
  var check = true;
  for (var i = 0; i < tmp.length-1; i++){
    check = !check;
    if (check) {
      res += '<i>'+tmp[i]+'</i>';
    } else if (tmp[i] != undefined){
      res += tmp[i];
    }
  }
  return res;
};

但将页面的其余部分分解到 IE11 浏览器中。

最佳答案

第 1 步:转换输入文本。

假设输入的格式为“text __city__ text __city__ ... text __city__" 按照您的示例。

const input = "text1 __paris__ text2 __london__ text3 __berlin__";
// the following will turn the input into an array of the form
// [ [text, city], [text, city], ... [text, city] ]
const pairs = input.slice(0, -2).split('__ ').map(pair => pair.split(' __'));

第 2 步:在 React 组件中使用数组。

假设变量pairs 保存上面定义的文本/城市对,以下将是组件内的render 方法(如果它是基于类的)。

render() {
  return (
    <ul>
      {pairs.map((pair, index) => {
        return <li key={index}>{pair[0]} <i>{pair[1]}</i></li>;
      })}
    </ul>
  );
}

关于javascript - 如何转换具有特定标识符的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47510651/

相关文章:

javascript - 在没有 CSS 的情况下 react 响应式布局

javascript - Darkroomjs 图像裁剪发布到 PHP

javascript - 如何限制 ext js 文本字段中的特定字符?

javascript - 单击按钮时连续重复翻转动画?

reactjs - 如何使用 Spectron 选择 React 组件?

javascript - 石板 JS : set the prop as the Editor's value

javascript - 如何删除模态打开时自动添加的额外水平滚动条?

javascript - 使用 Javascript 比较 HTML 中的两个输入数字?

javascript - react 原生 - 禁用 1 个方向的滚动

javascript - event.stopPropagation() 不适用于引导模式