Как удалить rn из строки в :

#javascript #node.js #split

Вопрос:

Эй, я пытаюсь разделить строку, прочитанную из файла, файл содержит несколько строк, которые читаются следующим образом

 username:passwordrn
username:passwordrn
username:passwordrn
 

И так далее, я не уверен, как сделать их все одновременно и разделить их на 2 разных параметра, один для имени пользователя и один для пароля.

Комментарии:

1. .split(":") ?

2. я пробовал это и тоже пытался . toString, чтобы я мог повторно разделить в rn, а затем просто добавить запятую вместо :

3. Что вы пробовали? Покажите свой код.

4. Пароли, хранящиеся в виде открытого текста в файле? Должен ли я перестать помогать сейчас в принципе?

Ответ №1:

Использование регулярного выражения и matchAll() , и передача возвращенного итератора Array.from() и использование встроенного map() для возврата объектов. (Имеет дополнительное преимущество в том, что позволяет : вводить пароли)

 const input = 'user1:password1rnuser2:password2rnuser3:password3rn';

const result = Array.from(
  input.matchAll(/(. ?):(. ?)rn/g),
  ([, username, password]) => ({ username, password })
);

console.log(result); 

Ответ №2:

Пожалуйста, попробуйте код ниже.

 var mainStr = "username:passwordrnusername:passwordrnusername:passwordrn";

var usernameArr = [];
var passwordArr = [];
mainStr.split("rn").forEach(str => {
  var strArr = str.split(":");
  strArr[0] amp;amp; usernameArr.push(strArr[0]);
  strArr[1] amp;amp; passwordArr.push(strArr[1]);
});
console.log("Username ", usernameArr);
console.log("Password ", passwordArr); 

Ответ №3:

Вы можете преобразовать это в массив пар ключ/значение

 let lines = `john:123443rn
alan:ffg1234rn
someone:xxghj!34rn`;

let pairs = lines.split("rn") // convert into an array
    .map(l => l.split(':') // split on the :
    .map(e => e.replaceAll("r", "").replaceAll("n", ""))) // clear out any extra newlines that lingered
    .filter(e => e.join('').trim() != '') // filter out any empties gathered along the way
    .map(grp => ({username: grp[0], password: grp[1]})) // transform the array into key/value pairs

console.log(pairs) 

Ответ №4:

используйте .метод замены

 const str ='username:passwordrn'
const username = str.split(:)[0];
const password = str.split(:)[1].replace(/[rn] /g, '');
 

Для полной строки:

 const str =`username:passwordrn
username:passwordrn
username:passwordrn`;

const res = str.split(/[rn]/g)
               .filter(l=>l!=="")
               .map(s=>({username:s.split(':')[0], password:s.split(':')[1]}));

console.log(res)
// [{username:'username', password:'password'},...];