2017-05-10 2 views
1

文字列を配列またはJSON形式に分割しようとしています。角度のあるjsコントローラ(HTMLビューではない)でそうすることを助けてください。文字列の形式が似ているanglejsコントローラの文字列を分割する

、私は働いてみた方法の

string="Name1;Email1;ID1~Name2;Email2;ID2" 

なし。私はstring.split( '〜')を使用してみましたが、splitは関数ではないため、エラーが発生しています。

myView.service('ViewService', [function() { 
var temp = []; 
var fstring = []; 
this.SplitUser = function (userstring) { 
    debugger; 
    //temp = userstring.split('~'); 
    angular.forEach(userstring, function (value, key) { 
     fstring.push({ 
      'Name': temp.split(';')[i], 
      'EmailID': temp.split(';')[i++], 
      'ID': temp.split(';')[i++] 
     }); 
    }) 
    console.log(temp); 
    console.log(fstring); 
    return temp; 
} 
+1

あなたがしようとしたすべての方法を投稿してください。 –

+0

'var arr = string.split( '〜');'は動作するはずです。完全なコードを投稿 –

答えて

0

必要性tempあなたがiを削除し、数

fstring.push({ 
    'Name': value.split(';')[0], 
    'EmailID': value.split(';')[1], 
    'ID': value.split(';')[2] 
); 

の変化このようなあなたのサービスとしての位置を使用しfstring配列に推進しているときuserstring .Also array.not。

.service('ViewService', [function() { 
var temp = []; 
var fstring = []; 
this.SplitUser = function (userstring) { 
    debugger; 
    temp = userstring.split('~'); 
    angular.forEach(temp, function (value, key) { 
     fstring.push({ 
      'Name': value.split(';')[0], 
      'EmailID': value.split(';')[1], 
      'ID': value.split(';')[2] 
     }); 
    }) 
    console.log(temp); 
    console.log(fstring); 
    return temp; 
} 
}]) 

デモ

angular.module("app",[]) 
 
.controller("ctrl",function($scope,ViewService){ 
 
    var string="Name1;Email1;ID1~Name2;Email2;ID2"; 
 
    ViewService.SplitUser(string) 
 

 
}).service('ViewService', [function() { 
 
var temp = []; 
 
var fstring = []; 
 
this.SplitUser = function (userstring) { 
 
    debugger; 
 
    temp = userstring.split('~'); 
 
    angular.forEach(temp, function (value, key) { 
 
     fstring.push({ 
 
      'Name': value.split(';')[0], 
 
      'EmailID': value.split(';')[1], 
 
      'ID': value.split(';')[2] 
 
     }); 
 
    }) 
 
    console.log(temp); 
 
    console.log(fstring); 
 
    return temp; 
 
} 
 
}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    
 
</div>

+0

のようなエラーが表示されます。TypeError:temp.splitは関数ではありません – Aneez

+0

'temp.split'use' temp 'を使用しないでください' temp = userstring.split( '〜'); 'サービスを再度確認してください –

0

var string = "Name1;Email1;ID1~Name2;Email2;ID2"; 
 
// Initial split in entries 
 
var splitStrings = string.split('~'); 
 
var objects = []; 
 
for(var i = 0; i < splitStrings.length; i++) { 
 
    // split into properties 
 
    var objProps = splitStrings[i].split(';'); 
 
    var myObj = {}; 
 
    myObj.name = objProps[0]; 
 
    myObj.mail = objProps[1]; 
 
    myObj.id = objProps[2]; 
 
    objects.push(myObj); 
 
} 
 

 
console.log(objects);

これはあなたの文字列を分割し、オブジェクトにそれを置く必要があります。それらのオブジェクトを配列に追加します。

JSONを使用してメッセージを送信するコードを制御したい場合は、代わりにJSON.parse()とJSON.stringify()を使用することをお勧めします。

この解決法では、投稿したような厳しい構造が必要であり、エラー処理はありません。ループへ

+0

のようなエラーを取得します。TypeError:temp.splitは、 – Aneez

+0

にある関数ではありません。これらのスニペットはあなたのために働くのですか、エラーも返されますか? – Morfium

0

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = []; 
 
var string="Name1;Email1;ID1~Name2;Email2;ID2" 
 
var arr = string.split('~'); 
 
angular.forEach(arr, function (value, key) { 
 
    
 
     $scope.name.push({ 
 
      'Name': value.split(';')[0], 
 
      'EmailID': value.split(';')[1], 
 
      'ID': value.split(';')[2] 
 
     }); 
 
    }) 
 
    console.log($scope.name); 
 
});
<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script> 
 
    <script src="app.js"></script> 
 
    </head> 
 

 
    <body ng-controller="MainCtrl"> 
 
    <p>Hello {{name}}!</p> 
 
    </body> 
 

 
</html>