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));