답변:
다음을 사용하여 문자열의 첫 문자를 제거 할 수 있습니다 substr
.
var s1 = "foobar";
var s2 = s1.substr(1);
alert(s2); // shows "oobar"
문자열 시작 부분에서 0을 모두 제거하려면 다음을 수행하십시오.
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
===
와 ==
동일하면 정확히 동일한 단계를 수행하고 (적어도 사양에 따르면) 다른 단계보다 더 나은 성능을 기대할 이유가 없습니다. .
substr
함께 substring
. MDN 확인 : developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
읽을 수있는 코드는 .substring()
시작이 두 번째 문자 (1)의 색인으로 설정 되어 사용되는 것 입니다 (첫 번째 문자에는 색인 0이 있음). .substring()
메소드 의 두 번째 매개 변수 는 실제로 선택 사항이므로 호출 할 필요조차 없습니다 .length()
...
str = str.substring(1);
... 그렇습니다. 간단합니다 ...
@Shaded가 제안했듯이 문자열의 첫 번째 문자가 "원치 않는"문자 인 동안 이것을 반복하십시오 ...
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()
에서 (및 더 많은 것을에) 견적 String.slice과 String.substring의 차이점은 무엇입니까?
또한 슬라이스 할 매개 변수가 음수이면 끝에서부터 문자열을 참조한다고 지적합니다. 하위 문자열과 하위 문자열은 그렇지 않습니다.
예 : http://jsfiddle.net/kCpNQ/
var myString = "0String";
if( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
여러 가지가있을 수 있다면 0
시작 부분에 문자, 당신은을 변경할 수 있습니다 if()
A를 while()
.
예 : http://jsfiddle.net/kCpNQ/1/
var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
substring
기능 을 사용해 보셨습니까 ?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
여기 참조가 있습니다-https: //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring
그리고 당신은 항상 여러 개의 0에 대해 이것을 할 수 있습니다 :
while(string.indexOf(0) == '0')
{
string = string.substring(1);
}
var s = "0test";
if(s.substr(0,1) == "0") {
s = s.substr(1);
}
모든 경우 0
: http://jsfiddle.net/An4MY/
String.prototype.ltrim0 = function() {
return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
charAt
? 왜 괄호? 왜 프로토 타입 확장입니까? 왝.
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);
다음은 입력이 a string
, uses substring
이고 몇 가지 단위 테스트와 함께 제공 되는 것으로 가정하지 않은 것입니다.
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
문자열에서 공백을 제거하고 선행 또는 종료하는 trim ()>의 Javascript 구현에서 다음은이 질문에 대한 답변의 수정 된 구현입니다.
var str = "0000one two three0000"; //TEST
str = str.replace(/^\s+|\s+$/g,'0'); //ANSWER
JS에서이를위한 원래 구현
string.trim():
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,'');
}
}
charAt
인덱스가 마지막 문자의 인덱스를 초과하더라도 항상 문자열을 반환 하기 때문에 차이가 없습니다 . 따라서 유형 강제 변환이 수행되지 않으며 알고리즘은 동일합니다. 하지만 선호합니까===
이상==
이 차이를하지 않는 경우에도. ;)