Saya ingin menggunakan karakter pertama dari string dalam angularjs
Seperti yang saya gunakan {{ uppercase_expression | uppercase}}
itu mengkonversi seluruh string ke huruf besar.
Saya ingin menggunakan karakter pertama dari string dalam angularjs
Seperti yang saya gunakan {{ uppercase_expression | uppercase}}
itu mengkonversi seluruh string ke huruf besar.
Jawaban:
gunakan filter kapital ini
var app = angular.module('app', []);
app.controller('Ctrl', function ($scope) {
$scope.msg = 'hello, world.';
});
app.filter('capitalize', function() {
return function(input) {
return (angular.isString(input) && input.length > 0) ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase() : input;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="Ctrl">
<p><b>My Text:</b> {{msg | capitalize}}</p>
</div>
</div>
return (angular.isString(s) && s.length > 0) ? s[0].toUpperCase() + s.substr(1).toLowerCase() : s;
. Jika bukan string maka kembalikan tidak berubah.
Saya akan mengatakan jangan gunakan angular / js karena Anda bisa menggunakan css sebagai gantinya:
Di css Anda, tambahkan kelas:
.capitalize {
text-transform: capitalize;
}
Kemudian, cukup bungkus ekspresi (misalnya) dalam html Anda:
<span class="capitalize">{{ uppercase_expression }}</span>
Tidak dibutuhkan js;)
:first-letter
selektor elemen pseudo. Ada lagi yang belum ditemukan? :)
Jika Anda menggunakan Bootstrap , Anda bisa menambahkan text-capitalize
kelas helper:
<p class="text-capitalize">CapiTaliZed text.</p>
EDIT: kalau-kalau tautannya mati lagi:
Transformasi Teks
Mengubah teks dalam komponen dengan kelas kapitalisasi teks.
teks dengan huruf kecil.
TEKS DATANG.
Teks CapiTaliZed.<p class="text-lowercase">Lowercased text.</p> <p class="text-uppercase">Uppercased text.</p> <p class="text-capitalize">CapiTaliZed text.</p>
Perhatikan bagaimana menggunakan huruf besar teks hanya mengubah huruf pertama dari setiap kata, sehingga kasing huruf lainnya tidak terpengaruh.
text-transform: capitalize;
Jika Anda menggunakan Angular 4+ maka Anda bisa menggunakannya titlecase
{{toUppercase | titlecase}}
tidak perlu menulis pipa.
cara yang lebih baik
app.filter('capitalize', function() {
return function(token) {
return token.charAt(0).toUpperCase() + token.slice(1);
}
});
Jika Anda mengejar kinerja, coba hindari menggunakan filter AngularJS karena diterapkan dua kali per setiap ekspresi untuk memeriksa stabilitasnya.
Cara yang lebih baik adalah dengan menggunakan ::first-letter
elemen pseudo- CSS dengan text-transform: uppercase;
. Itu tidak dapat digunakan pada elemen inline seperti span
, jadi hal terbaik berikutnya adalah menggunakan text-transform: capitalize;
seluruh blok, yang menggunakan huruf kapital setiap kata.
Contoh:
var app = angular.module('app', []);
app.controller('Ctrl', function ($scope) {
$scope.msg = 'hello, world.';
});
.capitalize {
display: inline-block;
}
.capitalize::first-letter {
text-transform: uppercase;
}
.capitalize2 {
text-transform: capitalize;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="Ctrl">
<b>My text:</b> <div class="capitalize">{{msg}}</div>
<p><b>My text:</b> <span class="capitalize2">{{msg}}</span></p>
</div>
</div>
::first-letter
tidak bekerja pada display: inline
atau display: flex
, hanya pada display:block
atau inline-block
elemen
Saya suka jawaban dari @ TrampGuy
CSS selalu (baik, tidak selalu) pilihan yang lebih baik, jadi: text-transform: capitalize;
tentu saja cara untuk pergi.
Tetapi bagaimana jika konten Anda semua huruf besar untuk memulai? Jika Anda mencoba text-transform: capitalize;
konten seperti "FOO BAR" Anda masih akan mendapatkan "FOO BAR" di layar Anda. Untuk menyiasatinya, Anda bisa memasukkan text-transform: capitalize;
css Anda, tetapi juga merender string Anda, jadi:
<ul>
<li class="capitalize">{{ foo.awesome_property | lowercase }}</li>
</ul>
tempat kami menggunakan kelas huruf besar @ TrampGuy:
.capitalize {
text-transform: capitalize;
}
Jadi, berpura-pura yang foo.awsome_property
biasanya mencetak "FOO BAR", sekarang akan mencetak "Foo Bar" yang diinginkan.
jika Anda ingin menggunakan huruf kapital dari setiap kata dari string (sedang berlangsung -> Sedang Berlangsung), Anda dapat menggunakan larik seperti ini.
.filter('capitalize', function() {
return function(input) {
return (!!input) ? input.split(' ').map(function(wrd){return wrd.charAt(0).toUpperCase() + wrd.substr(1).toLowerCase();}).join(' ') : '';
}
});
Ini adalah cara lain:
{{some_str | limitTo:1 | uppercase}}{{some_str.substr(1) | lowercase }}
Untuk Angular 2 ke atas, Anda dapat menggunakan {{ abc | titlecase }}
.
Periksa Angular.io API untuk daftar lengkap.
.capitalize {
display: inline-block;
}
.capitalize:first-letter {
font-size: 2em;
text-transform: capitalize;
}
<span class="capitalize">
really, once upon a time there was a badly formatted output coming from my backend, <strong>all completely in lowercase</strong> and thus not quite as fancy-looking as could be - but then cascading style sheets (which we all know are <a href="http://9gag.com/gag/6709/css-is-awesome">awesome</a>) with modern pseudo selectors came around to the rescue...
</span>
Untuk AngularJS dari meanjs.org, saya menempatkan filter khusus modules/core/client/app/init.js
Saya membutuhkan filter khusus untuk menggunakan huruf besar setiap kata dalam sebuah kalimat, berikut ini caranya:
angular.module(ApplicationConfiguration.applicationModuleName).filter('capitalize', function() {
return function(str) {
return str.split(" ").map(function(input){return (!!input) ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase() : ''}).join(" ");
}
});
Kredit dari fungsi peta pergi ke @Naveen raj
Di sudut 7+ yang memiliki pipa bawaan
{{ yourText | titlecase }}
Jika Anda tidak ingin membuat filter khusus maka Anda dapat menggunakannya secara langsung
{{ foo.awesome_property.substring(0,1) | uppercase}}{{foo.awesome_property.substring(1)}}
var app = angular.module("app", []);
app.filter('capitalize', function() {
return function(str) {
if (str === undefined) return; // avoid undefined
str = str.toLowerCase().split(" ");
var c = '';
for (var i = 0; i <= (str.length - 1); i++) {
var word = ' ';
for (var j = 0; j < str[i].length; j++) {
c = str[i][j];
if (j === 0) {
c = c.toUpperCase();
}
word += c;
}
str[i] = word;
}
str = str.join('');
return str;
}
});
Hanya untuk menambahkan pendapat saya sendiri tentang masalah ini, saya akan menggunakan arahan khusus sendiri;
app.directive('capitalization', function () {
return {
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
var transformedInput = (!!inputValue) ? inputValue.charAt(0).toUpperCase() + inputValue.substr(1).toLowerCase() : '';
if (transformedInput != inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
Setelah dideklarasikan, Anda dapat menempatkan di dalam Html Anda seperti di bawah ini;
<input ng-model="surname" ng-trim="false" capitalization>
Alih-alih jika Anda ingin menggunakan huruf besar untuk setiap kata dalam sebuah kalimat, Anda dapat menggunakan kode ini
app.filter('capitalize', function() {
return function(input, scope) {
if (input!=null)
input = input.toLowerCase().split(' ');
for (var i = 0; i < input.length; i++) {
// You do not need to check if i is larger than input length, as your for does that for you
// Assign it back to the array
input[i] = input[i].charAt(0).toUpperCase() + input[i].substring(1);
}
// Directly return the joined string
return input.join(' ');
}
});
dan tambahkan saja filter "capitalize" ke input string Anda, untuk ex - {{name | huruf besar}}
di Angular 4 atau CLI Anda dapat membuat PIPE seperti ini:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'capitalize'
})
/**
* Place the first letter of each word in capital letters and the other in lower case. Ex: The LORO speaks = The Loro Speaks
*/
export class CapitalizePipe implements PipeTransform {
transform(value: any): any {
value = value.replace(' ', ' ');
if (value) {
let w = '';
if (value.split(' ').length > 0) {
value.split(' ').forEach(word => {
w += word.charAt(0).toUpperCase() + word.toString().substr(1, word.length).toLowerCase() + ' '
});
} else {
w = value.charAt(0).toUpperCase() + value.toString().substr(1, value.length).toLowerCase();
}
return w;
}
return value;
}
}
Angular memiliki 'titlecase' yang mengkapitalisasi huruf pertama dalam sebuah string
Misalnya:
envName | titlecase
akan ditampilkan sebagai EnvName
Saat digunakan dengan interpolasi, hindari semua spasi seperti
{{envName|titlecase}}
dan huruf pertama dari nilai envName akan dicetak dalam huruf besar.
Anda dapat menambahkan kapitalisasi fungsi saat berjalan sebagai:
<td>{{lastName.charAt(0).toUpperCase()+ lastName.substr(1).toLowerCase()}}</td>
{{ uppercase_expression | capitaliseFirst}}
harus bekerja
Menambah jawaban Nidhish,
Untuk orang-orang yang Anda gunakan AngularJs dan ingin menggunakan huruf kapital pertama dari setiap kata dalam string, gunakan kode di bawah ini:
var app = angular.module('app', []);
app.controller('Ctrl', function ($scope) {
$scope.msg = 'hello, world.';
});
app.filter('titlecase', function() {
return function(input) {
//Check for valid string
if(angular.isString(input) && input.length > 0) {
var inputArray = input.split(' ');
for(var i=0; i<inputArray.length; i++) {
var value = inputArray[i];
inputArray[i] = value.charAt(0).toUpperCase() + value.substr(1).toLowerCase();
}
return inputArray.join(' ');
} else {
return input;
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="Ctrl">
<p><b>My Text:</b> {{msg | titlecase}}</p>
</div>
</div>