문자열 12345.00
이 있고을 반환하고 싶습니다 12345.0
.
나는 보았지만 trim
공백 만 다듬고 slice
이것이 어떻게 작동하는지 보지 못하는 것처럼 보입니다 . 어떤 제안?
Math.round('0.5') === 1
;)
문자열 12345.00
이 있고을 반환하고 싶습니다 12345.0
.
나는 보았지만 trim
공백 만 다듬고 slice
이것이 어떻게 작동하는지 보지 못하는 것처럼 보입니다 . 어떤 제안?
Math.round('0.5') === 1
;)
답변:
부분 문자열 함수를 사용할 수 있습니다 .
let str = "12345.00";
str = str.substring(0, str.length - 1);
console.log(str);
이것은 받아 들여지는 대답이지만 아래 대화에 따라 조각 구문이 훨씬 명확합니다.
let str = "12345.00";
str = str.slice(0, -1);
console.log(str);
str = str.substring(0, str.length -1);
slice
및 substring
방법은 모두 대부분 동일합니다; 를 제외하고는 slice()
문자열의 끝과 관련하여 음수 색인을 허용하지만을 제외 substring
하고는 out-of-bound
오류 가 발생합니다.
슬라이스 를 사용할 수 있습니다 ! 사용 방법을 알고 있어야합니다. 양수는 시작과 관련이 있고 음수는 끝과 관련이 있습니다.
js>"12345.00".slice(0,-1)
12345.0
substring
동적 문자열에서도 메소드를 사용할 수 없습니까? str.length를 사용하여 동적으로 길이를 얻습니까?
JavaScript 문자열 객체 의 하위 문자열 방법을 사용할 수 있습니다 .
s = s.substring(0, s.length - 4)
문자열에서 마지막 네 문자를 무조건 제거합니다 s
.
그러나 마지막 네 문자 를 조건부로 제거하려면 정확히 _bar
다음 과 같은 경우에만 제거하십시오 .
var re = /_bar$/;
s.replace(re, "");
slice
여기가 더 좋습니다. s.slice(0, -4)
가장 쉬운 방법은 slice
문자열 의 방법 을 사용하여 음수 위치를 허용하는 것입니다 (문자열 끝의 오프셋에 해당).
const s = "your string";
const withoutLastFourChars = s.slice(0, -4);
마지막 밑줄 이후 (및 밑줄 포함)를 모두 제거하기 위해보다 일반적인 것이 필요한 경우 다음을 수행 할 수 s
있습니다 (최소 한 개의 밑줄을 포함하는 한).
const s = "your_string";
const withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
console.log(withoutLastChunk);
귀하의 예와 같은 숫자의 경우 다음을 수행하는 것이 좋습니다 substring
.
console.log(parseFloat('12345.00').toFixed(1));
그러나 이것이 실제로 숫자를 반올림한다는 점에 유의하십시오.
console.log(parseFloat('12345.46').toFixed(1));
JavaScript의 슬라이스 기능 사용 :
let string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here
console.log(string);
이것은 문자열의 끝에서 길이에 상관없이 '_bar'를 제거하는 데 사용될 수 있습니다.
정규식을 사용하십시오.
let aStr = "12345.00";
aStr = aStr.replace(/.$/, '');
console.log(aStr);
console.log("a string".match(/(.*).$/)[1]);
console.log("a string".match(/(.*).$/));
console.log("a string".match(/(.*).{2}$/)[1]);
마지막 문자를 자르는 대신 일반 수레를 반올림하려면 다음을 수행하십시오.
var float1 = 12345.00,
float2 = 12345.4567,
float3 = 12345.982;
var MoreMath = {
/**
* Rounds a value to the specified number of decimals
* @param float value The value to be rounded
* @param int nrDecimals The number of decimals to round value to
* @return float value rounded to nrDecimals decimals
*/
round: function (value, nrDecimals) {
var x = nrDecimals > 0 ? 10 * parseInt(nrDecimals, 10) : 1;
return Math.round(value * x) / x;
}
}
MoreMath.round(float1, 1) => 12345.0
MoreMath.round(float2, 1) => 12345.5
MoreMath.round(float3, 1) => 12346.0
편집 : Paolo가 지적 했듯이이 기능이 내장되어있는 것 같습니다. 그 솔루션은 분명히 내 것보다 훨씬 깨끗합니다. parseFloat 와 toFixed를 차례로 사용하십시오.
https://jsfiddle.net/invos/w3zeqv6v/
/programming/34817546/javascript-how-to-delete-last-two-characters-in-a-string
공백을 원하지 않으면 트림을 사용하십시오.
"11.01 °C".slice(0,-2).trim()
오늘 2020.05.13 MacOs High Sierra v10.13.6에서 Chrome v81.0, Safari v13.1 및 Firefox v76.0에서 선택한 솔루션을 테스트합니다.
slice(0,-1)
(D)가 빠르거나 짧고 긴 문자열에 대한 빠른 솔루션이며 그것은 빠른 크로스 브라우저 솔루션으로 추천substring
(C) 및substr
(E) 은 빠릅니다.솔루션 A , B , C에 대해 두 가지 테스트를 수행합니다 . D , E ( ext ), F , G (my)에
솔루션은 아래 스 니펫에 표시됩니다
다음은 짧은 문자열 용 Chrome에 대한 예제 결과입니다.
String.prototype.{ split, slice, substr, substring }
UTF-16으로 인코딩 된 문자열에서 작동이전 답변 중 어느 것도 유니 코드를 인식하지 못합니다. 대부분의 최신 JavaScript 엔진에서는 문자열이 UTF-16으로 인코딩되지만 더 높은 유니 코드 코드 포인트에는 서로 게이트 쌍이 필요 하므로 기존의 기존 문자열 메소드는 유니 코드 코드 포인트가 아닌 UTF-16 코드 단위에서 작동합니다.
const string = "ẞ🦊";
console.log(string.slice(0, -1)); // "ẞ\ud83e"
console.log(string.substr(0, string.length - 1)); // "ẞ\ud83e"
console.log(string.substring(0, string.length - 1)); // "ẞ\ud83e"
console.log(string.replace(/.$/, "")); // "ẞ\ud83e"
console.log(string.match(/(.*).$/)[1]); // "ẞ\ud83e"
const utf16Chars = string.split("");
utf16Chars.pop();
console.log(utf16Chars.join("")); // "ẞ\ud83e"
또한 RegExp 답변은 현재 양식의 끝에 줄 바꿈과 일치하지 않습니다.
const string = "Hello, world!\n";
console.log(string.replace(/.$/, "").endsWith("\n")); // true
console.log(string.match(/(.*).$/) === null); // true
유니 코드 인식 코드는 문자열의 반복자를 사용합니다. 참조 Array.from
및 ...
확산 .
string[Symbol.iterator]
사용할 수 있습니다 (예 : 대신string
) .
JavaScript에서 유니 코드 문자열을 문자로 분할하는 방법 도 참조하십시오 .
예 :
const string = "ẞ🦊";
console.log(Array.from(string).slice(0, -1).join("")); // "ẞ"
console.log([
...string
].slice(0, -1).join("")); // "ẞ"
s
및 u
플래그를 사용하십시오 .RegExp
dotAll
또는 s
플래그 하게 .
일치 줄 바꿈 문자의 unicode
또는 u
플래그 특정 유니 코드 관련 기능을 사용할 수 있습니다.
예 :
const unicodeString = "ẞ🦊",
lineBreakString = "Hello, world!\n";
console.log(lineBreakString.replace(/.$/s, "").endsWith("\n")); // false
console.log(lineBreakString.match(/(.*).$/s) === null); // false
console.log(unicodeString.replace(/.$/su, "")); // ẞ
console.log(unicodeString.match(/(.*).$/su)[1]); // ẞ
// Now `split` can be made Unicode-aware:
const unicodeCharacterArray = unicodeString.split(/(?:)/su),
lineBreakCharacterArray = lineBreakString.split(/(?:)/su);
unicodeCharacterArray.pop();
lineBreakCharacterArray.pop();
console.log(unicodeCharacterArray.join("")); // "ẞ"
console.log(lineBreakCharacterArray.join("").endsWith("\n")); // false
일부 그래 핀 🏳️🌈
은 하나 이상의 코드 포인트 로 구성되며 , 예 를 들어 시퀀스 🏳
(U + 1F3F3), VS16
(U + FE0F) , ZWJ
(U + 200D) , 🌈
(U + 1F308)로 구성됩니다. 여기에서도 Array.from
이것을 4 개의 "문자"로 나눌 것입니다. 이것들과 유니 코드 속성을 일치시키는 것은 시퀀스 속성 제안을 이스케이프합니다 .
이 시도:
<script>
var x="foo_foo_foo_bar";
for (var i=0; i<=x.length; i++) {
if (x[i]=="_" && x[i+1]=="b") {
break;
}
else {
document.write(x[i]);
}
}
</script>
http://jsfiddle.net/informativejavascript/F7WTn/87/ 에서 실제 작업 예제를 시도 할 수도 있습니다 .
@ 제이슨 S :
슬라이스를 사용할 수 있습니다! 사용 방법을 알아야합니다. 양수는 시작과 관련이 있고 음수는 끝과 관련이 있습니다.
js> "12345.00".slice (0, -1) 12345.0
내 graphomany에 대해 죄송하지만 게시물은 'jquery'이전에 태그되었습니다. 따라서 slice () 는 하위 문자열이 아닌 DOM 요소 작업에 대한 jQuery 메서드 이므로 jQuery 내에서 slice ()를 사용할 수 없습니다. 즉, @Jon Erickson 은 정말 완벽한 솔루션을 제안합니다.
그러나 메소드는 간단한 Javascript 내에서 jQuery 함수에서 작동합니다. 의견에 대한 마지막 논의로 인해 jQuery는 자신의 부모가 가장 많이 알려진 ECMAScript보다 JS의 재생 가능한 확장보다 훨씬 더 흔합니다.
여기에는 두 가지 방법이 있습니다.
우리의
string.substring(from,to)
'to'index nulled 경우 나머지 문자열을 반환합니다. 그래서 :
string.substring(from)
긍정적 또는 부정적 ...
그리고 substr ()-substring과 'length'의 범위를 제공하는 다른 것들은 양수 일 수 있습니다.
string.substr(start,length)
또한 일부 관리자는 마지막 방법 string.substr(start,length)
이 MSIE에서 작동하지 않거나 오류와 함께 작동하지 않을 것을 제안합니다 .
String.prototype.slice
is a native method
slice()
DOM 조작을위한 jQuery 메소드 : jQuery API : .slice () . 그리고 확실히, 그것은 JS Array.slice ()의 다형성 상속과 같이 그려 질 수 있지만 두 가지 다른 방법이므로 구별해야한다고 생각합니다. 이 지식에 대한 근사치 일뿐입니다.
.slice
문자열 인 변수 를 호출 하면 OP가 원하는 것을 수행하게됩니다. "jQuery 내부"인지 여부는 중요하지 않으며 jQuery를 덮어 쓰지 않는 한 어떤 방식 으로든 "간섭"할 수있는 방법이 없습니다 String.prototype
. 따라서 모든 자바 스크립트 코드가 작동하지 않을 것입니다. 귀하의 답변은 다른 답변이 좋지 않으며 귀하가 제공 한 주장이 잘못되었다고 말합니다.
.data
조작을 하고이 "문자열"로 끝나는 경우) slice
. 당신이 원하는 것을하지 않을 것입니다. 그러나 이것은 실제로 유용한 답변이 아닙니다.
_bar의 왼쪽에 모든 것을 얻으려면 부분 문자열을 사용하십시오. 그러나 먼저 문자열에 _bar의 instr을 가져와야합니다.
str.substring(3, 7);
3은 시작이고 7은 길이입니다.