2016-04-06 14 views
1

In meinem Code möchte ich eine Zahl zu jedem Buchstaben in einer Zeichenfolge entsprechend der Position eines Buchstabens in einer Zeichenfolge hinzufügen. Was ich möchte, dass die Ausgabe für eine Zeichenfolge wie "someString" ist s1o2m3e4S5t6r7i8n9g10 und jetzt bekomme ich einigeString10.Hinzufügen einer Zahl zu jedem Buchstaben in einer Zeichenfolge

JSfiddle hier: https://jsfiddle.net/tq0p6y74/

Das ist mein HTML ist:

<div ng-controller="mainController"> 
    <div> 
    <label>Your string? 
    </label> 
    <input type="text" ng-model="someString" /> 
    </div> 
    <!--this calls the function and a variable--> 
    <h3>twitter.com/{{ lowercase() }}</h3> 
    <h3>twitter.com/{{ uppercase() }}</h3> 
    <h3>twitter.com/{{ string }}</h3> 
    <h3>twitter.com/{{ addNumToEachLetter() }}</h3> 
</div> 

Und dies ist der Controller:

myApp.controller('mainController', ['$scope', '$filter', function($scope, $filter) { 
    $scope.someString = ''; 
    $scope.uppercase = function() { 
    return $filter('uppercase')($scope.someString); 
    }; 
    $scope.lowercase = function() { 
    return $filter('lowercase')($scope.someString); 
    }; 
    $scope.addNumToEachLetter = function() { 
    var numbered = $scope.someString + ($scope.someString.length); 
    if ($scope.handle.length == 0) 
     return ''; 
    else 
     return numbered; 
    }; 
}]); 
+2

Sind Sie in der Lage ein Beispiel zu geben, was das Ergebnis sein sollte. Also, wenn mein String 'Marco' wäre, was würden Sie erwarten in '{{addNumToEachLetter()}}' – KieranDotCo

+0

mit einem String Marco Ausgabe wäre Marco5 – Marco

+0

@Marco Dieses Beispiel widerspricht dem in Ihrer Frage. Was willst du bekommen? –

Antwort

3

Erstellen Sie Ihre eigenen Filter:

myApp.filter('addNumToEachLetter', function(){ 
     return function(str){ 
     return str.split('').map(function(c, index){ return c + (index+1)}).join(''); 
     } 
    }) 

myApp.controller('mainController', ['$scope', '$filter', function($scope, $filter){ 
    $scope.someString = ''; 
    $scope.uppercase = function(){ 
     return $filter('uppercase')($scope.someString); 
    }, 
    $scope.lowercase = function(){ 
     return $filter('lowercase')($scope.someString); 
    }, 
    $scope.addNumToEachLetter = function(){ 
     return $filter('addNumToEachLetter')($scope.someString); 
    } 
}]); 
+0

Das ist, was ich suchte, danke! – Marco

3

Verwenden Sie einfach Angular Ausdrücke, etwa so:

<div ng-controller="mainController"> 
     <div> 
      <label>Your string? 
      </label> 
      <input type="text" ng-model="someString"/> 
     </div> <!--this calls the function and a variable--> 
     <h3>twitter.com/{{ someString | lowercase }}</h3> 
     <h3>twitter.com/{{ someString | uppercase }}</h3> 
     <h3>twitter.com/{{ string }}</h3> 
     <h3>twitter.com/{{ someString }}{{ someString.length ? someString.length : '' }}</h3> 
    </div> 

Sie müssen für diesen Typ von Expressionsinterpolationen keine Funktionen in Ihrem Controller aufrufen.

+0

Ich habe die Frage bearbeitet, da dies mir die gleiche Ausgabe wie vorher gibt – Marco

+0

Marco Sieh dir @GonzaloPincheiraArancibias Antwort an - Es ist genau, wie ich es gemacht hätte –

Verwandte Themen