2017-03-14 4 views
0

私は助けが必要です。助けてくださいオブジェクトにJavascript分割複数行の文字列

ssh_config = [ { 
    host: '123.123.123.123', 
    port: 22, 
    username: 'admin', 
    password: 'admin' 
}, 
{ 
    host: '123.123.123.13', 
    port: 22, 
    username: 'user', 
    password: 'user' 
}, 
{ 
    host: '123.123.121.3', 
    port: 22, 
    username: 'fpt', 
    password: 'user' 
}] 

let str = `123.123.123.123|admin|admin|Russian Federation (RU)||SPEED: 5 
123.123.123.13|user|user|Russian Federation (RU)||SPEED: 5 
123.123.121.3|fpt|user|Russian Federation (RU)||SPEED: 5` 

私が欲しい: 私は、文字列を持っています。本当にありがとう。 私はjavascriptでそれをコード化していません。

+1

。何か試してみる必要があります。あなたがジャバスクリプトをまったく知らないのなら、まずそれを学んでください。なぜなら、とにかく次のステップに立ち往生してしまうからです。 –

+0

ありがとう、ジェレミー。 私はちょうどjavascriptで始まりました。 文字列.split()またはregexを使って、1行でこれを行うことができます。 しかし、複数の行の文字列で、私はそれを行う方法がわかりません。 –

+0

文字列は単なる文字列です。視覚的には、ES6はそれを可能にするため複数行ですが、単一行の文字列のように動作します。 –

答えて

2

予想フィールドを含むオブジェクトに還元|記号によって要素分割する結果をマップ、改行で文字列を分割。私たちはあなたのためにそれをすべて行うことができない

let str = `123.123.123.123|admin|admin|Russian Federation (RU)||SPEED: 5 
 
123.123.123.13|user|user|Russian Federation (RU)||SPEED: 5 
 
123.123.121.3|fpt|user|Russian Federation (RU)||SPEED: 5`; 
 
// [p]roperties, [t]emplate, [f]unction, [s]tring, [l]ine, [a]ccumulator, [e]lement, [i]ndex 
 
const p = ['host', 'username', 'password'], t =() => ({ port: 22 }); 
 
const f = s => s.split('\n').map(l => l.split('|').reduce((a, e, i) => (i in p && (a[p[i]] = e), a), t())); 
 

 
console.log(f(str))

0

let str = `123.123.123.123|admin|admin|Russian Federation (RU)|22|SPEED: 5 
 
123.123.123.13|user|user|Russian Federation (RU)|22|SPEED: 5 
 
123.123.121.3|fpt|user|Russian Federation (RU)|22|SPEED: 5`; 
 
const HOST = 0, 
 
     PORT = 4, 
 
     USERNAME = 1, 
 
     PASSWORD = 2; 
 

 
const FIELD_SEP = '|'; 
 

 

 

 
var ssh_config = (function strtoObject(string) { 
 
    var lines = string.split(/\r\n|\n/), 
 
     result = []; 
 
     
 
     
 
    for (var i = 0, c = lines.length; i < c; i++) { 
 
     var fields = lines[i].split(FIELD_SEP), 
 
      localObj = { 
 
       host: fields[HOST], 
 
       port: fields[PORT], 
 
       username: fields[USERNAME], 
 
       password: fields[PASSWORD], 
 
      }; 
 
      
 
      result.push(localObj); 
 
    } 
 
    
 
    return result; 
 
})(str); 
 

 
console.info(ssh_config);

+0

多くのありがとう@smarber! –

関連する問題