Ma'lumotlarni yo'qotmasdan javascript bilan bo'linadi

Matnni ajratish uchun kodim bor, lekin ba'zi ma'lumotlar yo'qotmoqda. Mening savolim - matnni ajratish va barcha ma'lumotlarni saqlash. Quyidagi kodimmi?

 function splitArray(){
    var myStr = "| 07.02.2017 13:49:25 | Mehmon 6278: Salom, bu erda | 07.02.2017 13:49:58 | Admin: Ha, qanday yordam berishi mumkin? | 07.02.2017 13:50:25 | Mehmon 6278: Biz saytlarni o'zgartirishimiz kerakmi? | 07.02.2017 13:50:58 | Admin: Yo'q, kerak emas";
    var strArray = myStr.split(" | 0");

   //Display array values on page
    for (var i = 0; i < strArray.length; i++) {
        $("body").append("
" + strArray[i] + "

"); } }

muammo bu erda 7 sonidan oldin raqamni (0) olib tashlaydi

| 07.02.2017 13:49:25 | Mehmon 6278: Salom, bu erda

7.02.2017 13:49:58 | Admin: Ha, qanday yordam berishi mumkin?

7.02.2017 13:50:25 | Mehmon 6278: Biz saytlarni o'zgartirishimiz kerakmi?

7.02.2017 13:50:58 | Admin: Yo'q, kerak emas

2
| -ga bo'ling va kamaytiring.
qo'shib qo'ydi muallif TryingToImprove, manba

7 javoblar

Siz RegExp kodini ijobiy tashqi ko'rinish bilan ishlatishingiz mumkin.

agar 0 bilan boshlanmagan bo'lsa, /(? = \ | \ D)/ dan foydalaning. Agar siz faqatgina 0 bilan boshlangan raqamlar haqida qayg'urayotgan bo'lsangiz - /(? = \ | 0)/<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

function splitArray(){
    var myStr = "| 07.02.2017 13:49:25 | Guest 6278: Hi anybody here | 17.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(/(?= \| \d)/);

   //Display array values on page
    for (var i = 0; i < strArray.length; i++) {
        $("body").append("
" + strArray[i] + "

"); } } splitArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</div> </div>

4
qo'shib qo'ydi
Agar sana 0 bilan boshlanmasa nima bo'ladi?
qo'shib qo'ydi muallif Mistalis, manba
@Kinduser men uni o'chirib tashladim, chunki sizning juda yaxshi bo'lganingiz ... P
qo'shib qo'ydi muallif Mistalis, manba
@Fran Sana dalil sifatida tasavvur qila olasizmi? U tarix bilan suhbatdir ... Faqat 0dan boshlanadigan sanalar emas, balki har bir sana uchun ishlashga muhtoj ekaniga aminman.
qo'shib qo'ydi muallif Mistalis, manba
@Mistalis aniqlandi.
qo'shib qo'ydi muallif kind user, manba
@Fran Yana bir yechim bor edi, lekin uning egasi allaqachon o'z lavozimini o'chirib tashlagan, shuning uchun yoki so'zini (:
qo'shib qo'ydi muallif kind user, manba
@Fran rozilik berdi, o'shanda OX so'ragan narsani qaytarish yaxshiroq. Ammo boshqa foydali narsalar haqida xabar berish ham yaxshi.
qo'shib qo'ydi muallif kind user, manba
Siz yoki dan foydalanishingiz mumkin .... yoki?
qo'shib qo'ydi muallif Nope, manba
@Mistalis Menimcha, OC 0 dan boshqa hech narsa izlashni talab qilmagan deb o'ylamayman
qo'shib qo'ydi muallif Nope, manba
@Kinduser Agar OP qasddan 0 tashqari raqamlarni hisobga olmoqchi bo'lsa? - Mening fikrimcha, .... belgilangan talablardan ortiq kodlash istalmagan natijalarga olib kelishi mumkin. Bu holatda ham u to'g'ri bo'lishi mumkin.
qo'shib qo'ydi muallif Nope, manba
@Mistalis Hech qachon tasavvur qilmang, har doim talablarga ega bo'lgan odam bilan tasdiqlang, hatto ba'zi mijozlar uchun eng talabchan bo'lganidek, aniq ko'rinadigan bo'lsa ham, yomon odatga aylaning. Agar siz mijoz bilan uzoq vaqt ishlamasangiz, ularning istaklarini oldindan ko'ra bilishingiz hech qachon taxmin qilinmaydi. Mening oddiygina fikrimcha -
qo'shib qo'ydi muallif Nope, manba
Rahmatdan foydalanuvchi, bu kod ishlaydi. Men so'raganimdek: D
qo'shib qo'ydi muallif MeliDev, manba

Quyidagilarni qo'shib qo'yishdan oldin nolni qo'shing:

 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("
" + strArray[i] + "

"); else $("body").append("
" +0+ strArray[i] + "

"); } } splitArray();
1
qo'shib qo'ydi

Oldinga ijobiy qarash bilan muntazam ifoda foydalaning va quvur, bo'sh joy va raqamlar mavjud bo'lganda bo'linishi mumkin.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

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(/(?=\|\s+\d+)/);

console.log(strArray);
</div> </div>
0
qo'shib qo'ydi

Mana regexni ishlatmasdan yo'l. U ishlaydi, lekin @Itinchi foydalanuvchining javobini deb o'ylayman.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

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("|");

   //Display array values on page
    for (var i = 1; i < strArray.length; i++) {
        $("body").append("
" + strArray[i] + " | " + strArray[i + 1] + "

"); i++; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</div> </div>
0
qo'shib qo'ydi
OP buni biladi va mag'lubiyatni aniq pozitsiyalarda bo'lishini istaydi, lekin ayni paytda 0 ni saqlashni xohlaydi.
qo'shib qo'ydi muallif Nope, manba

Siz | ga bo'linib, keyin uni yaxshiroq formatga aylantirishingiz mumkin;

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
0
qo'shib qo'ydi

Bunga yoqadi

var strArray = myStr.split(" | ?<=0");
0
qo'shib qo'ydi

Albatta, bu ajratgichning bir qismi bo'lib xizmat qiladi. Bundan tashqari, agar sizning tarixingiz 0dan boshlanmagan bo'lsa, bu ishlamaydi. Shuning uchun bularni juftlarni ajratib ko'ring.

Untested:

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("
" + messageArray[i] + "

"); } }
0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb