Javascript 中给定字符之间的字符串子串集
Substring set of string between given characters in Javascript
我得到的字符串是
["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]
在这里我想删除从T到Z的子串以转换成这种形式:
["2021-01-13","2021-01-14","2021-01-15"]
我确实喜欢,但它只替换了第一个字符串并删除了其他字符串,我如何为每个单独执行此操作
notFound=notFound.replace(/\T.*\Z/g, '');
我可以使用 javascript 子串函数来实现吗?
你做对了,就像这样循环:
["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"].map(s => s.replace(/\T.*\Z/g, ''));
您可以替换为未准备好的搜索。
const
data = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]',
result = data.replace(/T.*?Z/g, '');
console.log(result);
我想你的意思是你最初有一个 array,而不是一个字符串,在这种情况下,这个答案就足够了。
您可以使用 Array.prototype.map()
对数组的每个元素进行替换。
const x = ["2021-01-13T09:45:48.046Z", "2021-01-14T09:45:48.096Z", "2021-01-15T09:45:48.099Z"];
const y = x.map(e => {
return e.replace(/T.*Z/, "");
});
console.log(y);
旁注:不需要对正则表达式中的T
和Z
进行转义,全局标志是多余的。
因为你说的是字符串所以你必须解析它。
const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let x = JSON.parse(str).map((e) => e.replace(/\T.*\Z/g, ''));
console.log(x);
如果字符串总是采用相同的格式,您可以将字符串转换为数组,然后在 T
上拆分并取第一部分。
const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let result = JSON.parse(str).map(s => s.split("T")[0]);
console.log(result);
对于特定的匹配,您可以使用格式匹配日期时间的模式 ^(\d{4}-\d{2}-\d{2}T)\d{2}:\d{2}:\d{2}\.\d{3}Z$
并替换为捕获组 1。
const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let result = JSON.parse(str).map(s =>
s.replace(/^(\d{4}-\d{2}-\d{2})T\d{2}:\d{2}:\d{2}\.\d{3}Z$/, "")
);
console.log(result);
我得到的字符串是
["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]
在这里我想删除从T到Z的子串以转换成这种形式:
["2021-01-13","2021-01-14","2021-01-15"]
我确实喜欢,但它只替换了第一个字符串并删除了其他字符串,我如何为每个单独执行此操作
notFound=notFound.replace(/\T.*\Z/g, '');
我可以使用 javascript 子串函数来实现吗?
你做对了,就像这样循环:
["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"].map(s => s.replace(/\T.*\Z/g, ''));
您可以替换为未准备好的搜索。
const
data = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]',
result = data.replace(/T.*?Z/g, '');
console.log(result);
我想你的意思是你最初有一个 array,而不是一个字符串,在这种情况下,这个答案就足够了。
您可以使用 Array.prototype.map()
对数组的每个元素进行替换。
const x = ["2021-01-13T09:45:48.046Z", "2021-01-14T09:45:48.096Z", "2021-01-15T09:45:48.099Z"];
const y = x.map(e => {
return e.replace(/T.*Z/, "");
});
console.log(y);
旁注:不需要对正则表达式中的T
和Z
进行转义,全局标志是多余的。
因为你说的是字符串所以你必须解析它。
const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let x = JSON.parse(str).map((e) => e.replace(/\T.*\Z/g, ''));
console.log(x);
如果字符串总是采用相同的格式,您可以将字符串转换为数组,然后在 T
上拆分并取第一部分。
const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let result = JSON.parse(str).map(s => s.split("T")[0]);
console.log(result);
对于特定的匹配,您可以使用格式匹配日期时间的模式 ^(\d{4}-\d{2}-\d{2}T)\d{2}:\d{2}:\d{2}\.\d{3}Z$
并替换为捕获组 1。
const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let result = JSON.parse(str).map(s =>
s.replace(/^(\d{4}-\d{2}-\d{2})T\d{2}:\d{2}:\d{2}\.\d{3}Z$/, "")
);
console.log(result);