Yanıtlar:
Bir dizenin ilk karakterini aşağıdakileri kullanarak kaldırabilirsiniz substr
:
var s1 = "foobar";
var s2 = s1.substr(1);
alert(s2); // shows "oobar"
Dizenin başındaki 0'ların tümünü kaldırmak için:
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
===
ve ==
tam olarak aynı adımları uygulayın (en azından spesifikasyona göre), bu yüzden birinin diğerinden daha iyi performans göstermesini beklemek için bir neden yoktur. .
substr
birlikte substring
. MDN'yi kontrol edin: developer.mozilla.org/tr-TR/docs/Web/JavaScript/Reference/…
Çok okunabilir kod, .substring()
ikinci karakterin indeksine (1) ayarlanmış bir başlangıç ile kullanılır (ilk karakterin indeksi 0'dır). .substring()
Yöntemin ikinci parametresi aslında isteğe bağlıdır, bu yüzden aramanıza bile gerek yoktur .length()
...
str = str.substring(1);
...Evet, bu kadar basit...
@Shaded'in önerdiği gibi, dizenizin ilk karakteri "istenmeyen" karakter iken bunu döngüye sokun ...
var yourString = "0000test";
var unwantedCharacter = "0";
//there is really no need for === check, since we use String's charAt()
while( yourString.charAt(0) == unwantedCharacter ) yourString = yourString.substr(1);
//yourString now contains "test"
.slice()
vs .substring()
vs.substr()
Alıntı: (ve daha fazlası) String.slice ve String.substring arasındaki fark nedir?
Ayrıca, dilim parametreleri negatifse, dizeden sondan referans aldıklarına dikkat çeker. Substring ve substr yapmaz.
Kullanım .charAt()
ve .slice()
.
Örnek: http://jsfiddle.net/kCpNQ/
var myString = "0String";
if( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
0
Başlangıçta birden fazla karakter olabilirse , simgesini if()
a olarak değiştirebilirsiniz while()
.
Örnek: http://jsfiddle.net/kCpNQ/1/
var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
substring
İşlevi denedin mi?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
İşte bir referans - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring
Ve bunu her zaman birden fazla 0 için yapabilirsiniz:
while(string.indexOf(0) == '0')
{
string = string.substring(1);
}
var s = "0test";
if(s.substr(0,1) == "0") {
s = s.substr(1);
}
Herkes için 0
: http://jsfiddle.net/An4MY/
String.prototype.ltrim0 = function() {
return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
charAt
? Neden parantez? Neden bir prototip uzantısı? Yuck.
//---- remove first and last char of str
str = str.substring(1,((keyw.length)-1));
//---- remove only first char
str = str.substring(1,(keyw.length));
//---- remove only last char
str = str.substring(0,(keyw.length));
String.prototype.trimStartWhile = function(predicate) {
if (typeof predicate !== "function") {
return this;
}
let len = this.length;
if (len === 0) {
return this;
}
let s = this, i = 0;
while (i < len && predicate(s[i])) {
i++;
}
return s.substr(i)
}
let str = "0000000000ABC",
r = str.trimStartWhile(c => c === '0');
console.log(r);
İşte girdinin a olduğunu string
, kullanmadığını substring
ve birkaç birim testle geldiğini varsaymayan bir tanesi:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
Dizelerden boşlukları silen ve çıkaran trim ()> Javascript uygulamasından. İşte bu sorunun cevabının değiştirilmiş bir uygulaması.
var str = "0000one two three0000"; //TEST
str = str.replace(/^\s+|\s+$/g,'0'); //ANSWER
JS'de bunun için orijinal uygulama
string.trim():
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,'');
}
}
charAt
dizin son karakterin dizinini aşsa bile her zaman bir dize döndürür, bu nedenle hiçbir tür zorlama yapılmaz ve algoritma aynı olur. Ama tercih edersiniz===
üzerinde==
bir fark yapmaz bile. ;)