interface Word {
index: number;
keyword: string;
value?: number;
}
const input = '温度19PH78规格是克,氨氮值0.5 99';
const keywords = ['PH']
let txt = parseKeywords(input, keywords)
console.log('txt', txt)
function parseDecimalNumbers(input: string): number[] {
const regex = /-?\b\d+(\.\d+)?\b/g;
const matches = input.match(regex);
return matches ? matches.map(Number) : [];
}
function parseKeywords(input: string, keywords: string[]) {
const wordSort: Word[] = [];
for (let i = 0; i < keywords.length; i++) {
const keyword = keywords[i]
const index = input.indexOf(keyword)
if (index != -1) {
wordSort.push({ index, keyword })
}
}
wordSort.sort((a, b) => a.index - b.index);
console.log(wordSort);
for (let i = 0; i < wordSort.length; i++) {
let word = wordSort[i];
let end = i < wordSort.length - 1 ? wordSort[i + 1].index : undefined;
let start = word.index + word.keyword.length;
let txt = input.substring(start, end)
console.log(txt)
let values = parseDecimalNumbers(txt);
if (values.length > 0) {
word.value = values[0];
}
}
return wordSort;
}