Câu trả lời:
Bạn có thể xóa ký tự đầu tiên của chuỗi bằng cách sử dụng substr
:
var s1 = "foobar";
var s2 = s1.substr(1);
alert(s2); // shows "oobar"
Để xóa tất cả 0 ở đầu chuỗi:
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
===
và ==
thực hiện chính xác các bước tương tự (ít nhất là theo thông số kỹ thuật), vì vậy không có lý do gì để mong đợi loại này hoạt động tốt hơn loại kia .
substr
bằng substring
. Kiểm tra MDN: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Mã rất dễ đọc là sử dụng .substring()
với một bắt đầu được đặt thành chỉ mục của ký tự thứ hai (1) (ký tự đầu tiên có chỉ số 0). Tham số thứ hai của .substring()
phương thức thực sự là tùy chọn, vì vậy bạn thậm chí không cần gọi .length()
...
str = str.substring(1);
...Có, nó là đơn giản...
Như @Shaded đề xuất, chỉ cần lặp lại điều này trong khi ký tự đầu tiên của chuỗi của bạn là ký tự "không mong muốn" ...
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()
đấu .substring()
với.substr()
Trích dẫn từ (và nhiều hơn về điều đó trong) Sự khác biệt giữa String.slice và String.sub chuỗi là gì?
Ông cũng chỉ ra rằng nếu các tham số để lát là âm, chúng tham chiếu chuỗi từ cuối. Chuỗi con và chất nền khôngn.
Ví dụ: http://jsfiddle.net/kCpNQ/
var myString = "0String";
if( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Nếu có thể có một vài 0
ký tự ở đầu, bạn có thể thay đổi if()
thành a while()
.
Ví dụ: http://jsfiddle.net/kCpNQ/1/
var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Bạn đã thử substring
chức năng?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
Đây là một tài liệu tham khảo - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/subopes
Và bạn luôn có thể làm điều này trong nhiều 0:
while(string.indexOf(0) == '0')
{
string = string.substring(1);
}
var s = "0test";
if(s.substr(0,1) == "0") {
s = s.substr(1);
}
Dành cho tất cả mọi người 0
: http://jsfiddle.net/An4MY/
String.prototype.ltrim0 = function() {
return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
charAt
? Tại sao dấu ngoặc? Tại sao một phần mở rộng nguyên mẫu? Kinh quá.
//---- 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);
Đây là một cái không cho rằng đầu vào là string
, sử dụng substring
và đi kèm với một vài thử nghiệm đơn vị:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
Từ việc triển khai Javascript của trim ()> sẽ loại bỏ và dẫn đầu hoặc kết thúc khoảng trắng khỏi chuỗi. Dưới đây là một triển khai thay đổi của câu trả lời cho câu hỏi này.
var str = "0000one two three0000"; //TEST
str = str.replace(/^\s+|\s+$/g,'0'); //ANSWER
Triển khai ban đầu cho điều này trên JS
string.trim():
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,'');
}
}
charAt
luôn trả về một chuỗi, ngay cả khi chỉ mục vượt quá chỉ mục của ký tự cuối cùng, do đó không có sự ép buộc nào được thực hiện và thuật toán kết thúc giống hệt nhau. Nhưng tôi thích===
hơn==
ngay cả khi nó không tạo ra sự khác biệt. ;)