Javascript:循环每行并删除,直到指定字符

Javascript:循环每行并删除,直到指定字符,javascript,Javascript,这是我要处理的日志: 2017-07-03 15:10:40.945 Host -> LOG| Here comes the text I need 2017-07-03 15:10:40.946 Host -> LOG| Here comes the text I need2 2017-07-03 15:10:40.947 Host -> LOG| Here comes the text I need3 目前它只在第一行工作: var myText

这是我要处理的日志:

2017-07-03  15:10:40.945    Host -> LOG| Here comes the text I need
2017-07-03  15:10:40.946    Host -> LOG| Here comes the text I need2
2017-07-03  15:10:40.947    Host -> LOG| Here comes the text I need3
目前它只在第一行工作:

var myText = '...'
var preProcessed = myText.substring(myText.indexOf("|") - 3);
LOG| Here comes the text I need 
2017-07-03  15:10:40.946    Host -> LOG| Here comes the text I need2 
2017-07-03  15:10:40.947    Host -> LOG| Here comes the text I need3
结果(仅适用于第一行):


我怎样才能逐行循环,在末尾再次出现一个没有日期和时间的文本?

您可以按新行拆分,删除不需要的文本,然后将其重新合并。像这样

var log=`2017-07-03 15:10:40.945主机->日志|这里是我需要的文本
2017-07-03 15:10:40.946主机->日志|我需要的文本来了2
2017-07-03 15:10:40.947主机->日志|我需要的文本来了3`
var preProcessed=log.split(“\n”).map(函数(l){
返回l.substring(l.indexOf(“|”)-3);
}).加入(“\n”);
console.log(预处理);
//您也可以像这样使用正则表达式
var preprocessingregex=log.replace(/.*->\s/g');

console.log(preprocessingregex)您应该先获取行数组,然后执行所需操作。 大概是这样的:

var lines = text.split('\n');
lines.forEach((line) => {
  console.log(line.substring(line.indexOf("|") - 3))
})

显示您尝试过的内容。看起来您也需要单词
LOG
,那么为什么不从这里开始,您还需要告诉我们更多,这些日志是否在文件中,并且每个日志都是文件中的一行?使用新行分隔符拆分,并将此函数应用于数组中的每个项目。非常好。谢谢你解释这两种选择。作为一个初学者,我必须找到关于正则表达式模式的解释,也许这有帮助:*匹配任何字符(除了行终止符。“->”匹配字符->\s匹配任何空白字符(等于[\r\n\t\f\v])@gmrenard不客气!很高兴你找到了正则表达式的解释。如果有帮助,请接受答案:)