Reactjs React typescript,如何查找'#';串连

Reactjs React typescript,如何查找'#';串连,reactjs,typescript,replace,find,Reactjs,Typescript,Replace,Find,我有一个关于解决我问题的办法的问题。。我需要找到字符串中“#”之间的所有单词 例如: const str = `<Table striped bordered hover> <thead> <tr> <th>#project name#</th> <th>#First Name#</th> <th>#Last Name#</th>

我有一个关于解决我问题的办法的问题。。我需要找到字符串中“#”之间的所有单词

例如:

    const str = `<Table striped bordered hover>
  <thead>
    <tr>
      <th>#project name#</th>
      <th>#First Name#</th>
      <th>#Last Name#</th>
      <th>#Username#</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Mark</td>
      <td>Otto</td>
      <td>@mdo</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Jacob</td>
      <td>Thornton</td>
      <td>@fat</td>
    </tr>
    <tr>
      <td>3</td>
      <td colSpan="2">#Footer#</td>
      <td>#social media#</td>
    </tr>
  </tbody>
</Table>
<p> normal text: #Published data# </p>
`
const str=`
#项目名称#
#名字#
#姓#
#用户名#
1.
做记号
奥托
@mdo
2.
雅各布
桑顿
@肥
3.
#页脚#
#社交媒体#
正常文本:#发布数据#

`
有什么办法吗?我必须在我的表中找到,我可以用数据库中的单词替换这些单词。我考虑过proptype.replaceAll,但我无法通过以下方式解决它:///p>
const str=`
    const str = `<Table striped bordered hover>
  <thead>
    <tr>
      <th>#project name#</th>
      <th>#First Name#</th>
      <th>#Last Name#</th>
      <th>#Username#</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Mark</td>
      <td>Otto</td>
      <td>@mdo</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Jacob</td>
      <td>Thornton</td>
      <td>@fat</td>
    </tr>
    <tr>
      <td>3</td>
      <td colSpan="2">#Footer#</td>
      <td>#social media#</td>
    </tr>
  </tbody>
</Table>
<p> normal text: #Published data# </p>`;
    const words = [];
    let start = false;
    let word = "";
    for (let i = 0; i < str.length; i++) {
      if (str[i] === "#") {
        if (start) words.push(word);
        word = "";
        start = !start;
      } else {
        if (start) {
          word += str[i];
        }
      }
    }
    console.log(words);
#项目名称# #名字# #姓# #用户名# 1. 做记号 奥托 @mdo 2. 雅各布 桑顿 @肥 3. #页脚# #社交媒体# 正常文本:#发布数据#

`; 常量字=[]; 让start=false; 让单词=”; for(设i=0;i
应该可以。也许你没有正确地使用它?我们希望使用一个
RegExp
,它惰性地将两个
#
符号之间的文本与捕获组匹配。然后可以使用任何回调函数替换这些值

Typescript有点奇怪,因为TS不知道我们的
RegExp
有一个捕获组,并且我们总是会得到一个
string
作为
replacer
函数的第二个参数。它的类型使得第二个参数,即我们的捕获组,可以是
any
类型

/**
 * this is where you implement your actual replacement logic
 */
const findReplacement = (text: string) => {
    switch (text.toLowerCase()) {
        case 'project name':
            return '<span class="project">Project</span>';
        case 'footer':
            return "Replacement for Footer";
        default:
            return text;
    }
}

/**
 * function to handle a string like your example
 */
const processTemplate = (text: string) => {
    return text.replaceAll(
        /#(.*?)#/g, 
        (_, match) => findReplacement(match)
    );
}

可运行堆栈代码段(无TS)

const findReplacement=(文本)=>{
开关(text.toLowerCase()){
案例“项目名称”:
返回“项目”;
案例“页脚”:
返回“替换页脚”;
违约:
返回文本;
}
}
const processTemplate=(文本)=>{
返回text.replaceAll(
/#(.*)#/g,
(u,匹配)=>findReplacement(匹配)
);
}
常量str=`
#项目名称#
#名字#
#姓#
#用户名#
1.
做记号
奥托
@mdo
2.
雅各布
桑顿
@肥
3.
#页脚#
#社交媒体#
正常文本:#发布数据#

`;
log(processTemplate(str))console.log(processTemplate(str));