问题描述
我有一个应该清除字符串的函数,实际上我有两种字符串"SATISFACTION._IS1.TOUTES_SITUATIONS.current_month_note"或"SATISFACTION._IS1.TOUTES_SITUATIONS.note" 。
PS 的信息TOUTES_SITUATIONS是可变的
我要返回的是"TOUTES_SITUATIONS"
这是我的代码
const extractSituation: Function = (sentence: string): string => {
return sentence.substring(
sentence.lastIndexOf('1.') + 2,
sentence.lastIndexOf('.n'),
);
};
实际上,它仅处理一种类型的句子"SATISFACTION._IS1.TOUTES_SITUATIONS.note"而不是"SATISFACTION._IS1.TOUTES_SITUATIONS.current_month_note"
我该怎么办?
1楼
数组的索引从0开始。尝试如下操作:
const extractSituation: Function = (sentence: string): string => {
return sentence.split('.')[2];
};
2楼
您也许可以为此使用正则表达式来提取第一个SATISFACTION._IS1.之间的文本SATISFACTION._IS1.
最后.
:
let s = "SATISFACTION._IS1.TOUTES_SITUATIONS.current_month_note" let s2 = "SATISFACTION._IS1.TOUTES_someother.text__SITUATIONS.note" let regex = /^SATISFACTION._IS1\\.(.*)\\..*$/ console.log(s.match(regex)[1]) console.log(s2.match(regex)[1])
3楼
我假设:
1)您需要处理一个一般情况,即“情况”可以是任何不带句点的字符串。
2)在“情境”前后的中断由“。”分隔。
您可以从情境的开头到句子的结尾检索子字符串,然后找到下一个'。'的索引。 查找仅包含情况的子字符串。
const extractSituation: Function = (sentence: string): string => {
// sentence truncated up to start of situation
var situation = sentence.substring(sentence.lastIndexOf('1.') + 2);
// Up to the next period from start of situation
return situation.substring(0, situation.indexOf('.'));
};
仅当您可以假设每种情况都以“ 1”开头时,此代码才有效。 指数。