用JSX元素替换字符串?

时间:2016-06-28 15:19:09

标签: javascript reactjs typescript jsx

我想格式化这样的日期时间:

yyyy-MM-dd hh:mm:ss

如果我返回一个字符串是这样的:

2016-07-02 20:14:12

有些代码是这样的(所有代码都是here):

let token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'|'[^']*'/g;
mask.replace(token, (match) => {
      if (match in flags) {
        return flags[match];
      }
      return match.slice(1, match.length - 1);
    });

现在问题是我希望号码被React.Component包裹,例如:

<span>2016</span>-<span>07</span>-<span>02</span> <span>20</span>:<span>14</span>:<span>12</span>

我想指出包装的元素并不总是span,也许是我自己定义的组件,例如MyComponent

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

注意:这是普通的字符串计算。您可以检查JSX的逻辑和更新。

var str = "2016-07-02 20:14:12";
var result = str.split(" ").map(function(a){
  var delimeter = a.match(/[^0-9]/)[0];
  return a.split(delimeter).map(function(item){
    return "<span>" + item + "<span>";
  }).join(delimeter);
}).join(" ");

document.getElementById("result").innerText = result;
<span id="result"></span>

对于JSX,我想你可以尝试这样的事情:

var str = "2016-07-02 20:14:12";
var result = str.split(" ").map(function(a){
  var delimeter = a.match(/[^0-9]/)[0];
  return a.split(delimeter).map(function(item){
    return <span>{item}<span>;
  }).join(delimeter);
}).join(" ");

答案 1 :(得分:0)

经过一些研究后,我发现现有的库不符合我的要求。所以,当然,我写了自己的:

https://github.com/EfogDev/react-process-string

它非常易于使用。你的案例:

>>> import magic
>>> s = magic.Magic()
>>> s.from_file("test.txt")
'ASCII text, with no line terminators'
>>>