使用javascript拆分文本而不丢失数据

使用javascript拆分文本而不丢失数据,javascript,Javascript,我有一个用于拆分文本的代码,但它正在丢失一些数据。我的问题是如何分割文本并保留所有数据。我的代码在下面 function splitArray(){ var myStr = "| 07.02.2017 13:49:25 | Guest 6278: Hi anybody here | 07.02.2017 13:49:58 | Admin: Yes, how may l help you | 07.02.2017 13:50:25 | Guest 6278: Do we have to

我有一个用于拆分文本的代码,但它正在丢失一些数据。我的问题是如何分割文本并保留所有数据。我的代码在下面

 function splitArray(){
    var myStr = "| 07.02.2017 13:49:25 | Guest 6278: Hi anybody here | 07.02.2017 13:49:58 | Admin: Yes, how may l help you | 07.02.2017 13:50:25 | Guest 6278: Do we have to change sites | 07.02.2017 13:50:58 | Admin: No, no need";
    var strArray = myStr.split(" | 0");

    // Display array values on page
    for (var i = 0; i < strArray.length; i++) {
        $("body").append("<p>" + strArray[i] + "</p>");
    }
}
函数splitArray(){
var myStr=“| 07.02.2017 13:49:25 | Guest 6278:大家好| 07.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 | Guest 6278:我们需要更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(“0”);
//在第页上显示数组值
对于(变量i=0;i”;
}
}
问题在于它删除了日期7之前的数字(0)

|07.02.2017 13:49:25 |客人6278:嗨,有人在吗

2017年2月7日13:49:58 |管理员:是的,我能为您做些什么

2017年2月7日13:50:25 |客人6278:我们必须更改网站吗


2017年2月7日13:50:58 |管理员:不,不需要

这里有一种不用正则表达式的方法。这很有效,但我认为更好

var myStr=“| 07.02.2017 13:49:25 |嘉宾6278:大家好| 07.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 |嘉宾6278:我们必须更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(“|”);
//在第页上显示数组值
对于(变量i=1;i”);
i++;
}

您可以将
RegExp
正向前瞻
一起使用

很少有人问如果数字不是以
0开头怎么办
-那么你应该使用
/(?=\\124;\ d)/
。如果您只关心以
0
开头的数字,请使用
/(?=\\124; 0)/
函数splitArray(){
var myStr=“| 07.02.2017 13:49:25 | Guest 6278:大家好| 17.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 | Guest 6278:我们需要更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(/(?=\\\\\d)/);
//在第页上显示数组值
对于(变量i=0;i”;
}
}
splitArray()

您可以在
|
上拆分,然后将其转换为更好的格式

var myStr = "| 07.02.2017 13:49:25 | Guest 6278: Hi anybody here | 07.02.2017 13:49:58 | Admin: Yes, how may l help you | 07.02.2017 13:50:25 | Guest 6278: Do we have to change sites | 07.02.2017 13:50:58 | Admin: No, no need";
var strArray = myStr.split("|");

var result = [];
for (let i = 0; i < strArray.length; i += 2) {
    result.push(strArray[i] + ' | ' + strArray[i + 1]);
}

//= results should be a array with the entries
var myStr=“| 07.02.2017 13:49:25 |嘉宾6278:大家好| 07.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 |嘉宾6278:我们必须更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(“|”);
var结果=[];
对于(设i=0;i
你喜欢这样吗

var strArray = myStr.split(" | ?<=0");

var strArray=myStr.split(“|?当然会,因为它是分隔符的一部分。此外,如果您的日期不是以0开头的,则这将不起作用。因此,请尝试将它们成对拆分

未经测试:

function splitArray(){
  var myStr = "| 07.02.2017 13:49:25 | Guest 6278: Hi anybody here | 07.02.2017 13:49:58 | Admin: Yes, how may l help you | 07.02.2017 13:50:25 | Guest 6278: Do we have to change sites | 07.02.2017 13:50:58 | Admin: No, no need";
  var strArray = myStr.split('|');
  // remove the first empty element
  strArray.splice(0, 1);

  if (strArray.length % 2 !== 0)
    console.log('Parsing error');

  var messageArray = [];

  while(strArray.length > 0) {
    var pair = strArray.splice(0, 2);
    messageArray.push(pair.join('|'));
  }

  // Display array values on page
  for (var i = 0; i < messageArray.length; i++) {
    $("body").append("<p>" + messageArray[i] + "</p>");
  }
}
函数splitArray(){
var myStr=“| 07.02.2017 13:49:25 | Guest 6278:大家好| 07.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 | Guest 6278:我们需要更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(“|”);
//删除第一个空元素
横向拼接(0,1);
如果(strArray.length%2!==0)
log('解析错误');
var messageArray=[];
而(strArray.length>0){
var对=横向拼接(0,2);
messageArray.push(pair.join(“|”);
}
//在第页上显示数组值
对于(var i=0;i”);
}
}

如果找到管道、空间和数字,则可以使用具有正向前瞻性的正则表达式并拆分

var myStr=“| 07.02.2017 13:49:25 |嘉宾6278:大家好| 07.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 |嘉宾6278:我们必须更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(/(?=\\\\s+\d+/);

console.log(strArray);
只需在像这样附加之前附加一个零:

 function splitArray(){
    var myStr = "| 07.02.2017 13:49:25 | Guest 6278: Hi anybody here | 07.02.2017 13:49:58 | Admin: Yes, how may l help you | 07.02.2017 13:50:25 | Guest 6278: Do we have to change sites | 07.02.2017 13:50:58 | Admin: No, no need";
    var strArray = myStr.split(" | 0");

    // Display array values on page
    for (var i = 0; i < strArray.length; i++) {
    if(i==0)
        $("body").append("<p>" + strArray[i] + "</p>");
        else $("body").append("<p>" +0+ strArray[i] + "</p>");
    }
}
splitArray();
函数splitArray(){
var myStr=“| 07.02.2017 13:49:25 | Guest 6278:大家好| 07.02.2017 13:49:58 |管理员:是的,我能为您做些什么| 07.02.2017 13:50:25 | Guest 6278:我们需要更改网站吗| 07.02.2017 13:50:58 |管理员:不,不需要”;
var strArray=myStr.split(“0”);
//在第页上显示数组值
对于(变量i=0;i”;
else$(“body”)。追加(“”+0+strArray[i]+“

”); } } splitArray();
|
上拆分并减少..OP知道这一点,希望在这些精确位置拆分字符串,但同时希望保留
0
。如果日期不是以
0
开头怎么办?@Mistalis我认为OP没有要求查找任何东西,除了
0
@Kinduser我已经删除了它,贝卡用你的更好;P@Fran同意,最好准确地返回OP要求的内容。但也可以让他知道其他有用的功能。感谢善良的用户,此代码有效。正如我所问的:D