在另外两个字符串文本 JS 之间查找和替换字符串文本
Find and replace string text between two other string texts JS
我正在尝试查找并替换字符串中的单词
示例:
let string =
`
Title: Hello World
Authors: Michael Dan
`
我需要找到 Hellow World
并用我想要的替换,这是我的尝试:
const replace = string.match(new RegExp("Title:" + "(.*)" + "Authors:")).replace("Test")
您最好先转换为 object,然后再定义标题 属性:
let string =
`
Title: Hello World
Authors: Michael Dan
`
const stringLines = string.split('\n');
let stringAsObject = {};
stringLines.forEach(
(line) => {
if (line.includes(':')) {
stringAsObject[line.split(':')[0]] = line.split(':')[1];
}
}
);
stringAsObject.Title = 'NewValue';
您可以使用 replace
这样的方法:
string.replace("Hello World", "Test");
当您替换一些文本时,没有必要 运行 String#match
或 RegExp#exec
显式地 String#replace
在幕后进行。
您可以使用
let string = "\nTitle: Hello World\nAuthors: Michael Dan\n"
console.log(string.replace(/(Title:).*(?=\nAuthors:)/g, ' Test'));
模式匹配
(Title:)
- 第 1 组:Title:
固定字符串
.*
- 行的其余部分,除换行符、CR 和 LF 之外的任何零个或多个字符(我们需要使用此文本才能将其删除)
(?=\nAuthors:)
- 与紧随其后的 LF 字符和 Authors:
字符串匹配的位置的正面前瞻。
参见regex demo。
如果您的字符串中可以有一个 CRLF 行结尾,您需要将 (?=\nAuthors:)
替换为 (?=\r?\nAuthors:)
或 (?=(?:\r\n?|\n)Authors:)
。
我可以不用正则表达式来实现。您所需要的只是知道您需要查找的字符串的索引。
var original = `
Title: Hello World
Authors: Michael Dan
`;
var stringToFind = "Hello World";
var indexOf = original.indexOf(stringToFind);
original = original.replace(original.substring(indexOf, indexOf + stringToFind.length), "Hey Universe!");
console.log(original)
我正在尝试查找并替换字符串中的单词
示例:
let string =
`
Title: Hello World
Authors: Michael Dan
`
我需要找到 Hellow World
并用我想要的替换,这是我的尝试:
const replace = string.match(new RegExp("Title:" + "(.*)" + "Authors:")).replace("Test")
您最好先转换为 object,然后再定义标题 属性:
let string =
`
Title: Hello World
Authors: Michael Dan
`
const stringLines = string.split('\n');
let stringAsObject = {};
stringLines.forEach(
(line) => {
if (line.includes(':')) {
stringAsObject[line.split(':')[0]] = line.split(':')[1];
}
}
);
stringAsObject.Title = 'NewValue';
您可以使用 replace
这样的方法:
string.replace("Hello World", "Test");
当您替换一些文本时,没有必要 运行 String#match
或 RegExp#exec
显式地 String#replace
在幕后进行。
您可以使用
let string = "\nTitle: Hello World\nAuthors: Michael Dan\n"
console.log(string.replace(/(Title:).*(?=\nAuthors:)/g, ' Test'));
模式匹配
(Title:)
- 第 1 组:Title:
固定字符串.*
- 行的其余部分,除换行符、CR 和 LF 之外的任何零个或多个字符(我们需要使用此文本才能将其删除)(?=\nAuthors:)
- 与紧随其后的 LF 字符和Authors:
字符串匹配的位置的正面前瞻。
参见regex demo。
如果您的字符串中可以有一个 CRLF 行结尾,您需要将 (?=\nAuthors:)
替换为 (?=\r?\nAuthors:)
或 (?=(?:\r\n?|\n)Authors:)
。
我可以不用正则表达式来实现。您所需要的只是知道您需要查找的字符串的索引。
var original = `
Title: Hello World
Authors: Michael Dan
`;
var stringToFind = "Hello World";
var indexOf = original.indexOf(stringToFind);
original = original.replace(original.substring(indexOf, indexOf + stringToFind.length), "Hey Universe!");
console.log(original)