मेरे पास एक स्ट्रिंग है, 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
त्रुटि फेंकता है
substring
की तुलना में 11% तेज है slice
। jsperf.com/js-slice-vs-substring-test
आप स्लाइस का उपयोग कर सकते हैं ! आपको बस यह सुनिश्चित करना है कि आप इसका उपयोग करना जानते हैं। सकारात्मक # शुरुआत के सापेक्ष हैं, नकारात्मक संख्या अंत के सापेक्ष हैं।
js>"12345.00".slice(0,-1)
12345.0
substring
विधि का उपयोग गतिशील तारों पर भी नहीं किया जा सकता है? Str.length का उपयोग करके गतिशील रूप से लंबाई प्राप्त करें?
आप जावास्क्रिप्ट स्ट्रिंग ऑब्जेक्ट्स की प्रतिस्थापन विधि का उपयोग कर सकते हैं :
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));
जावास्क्रिप्ट के स्लाइस फ़ंक्शन का उपयोग करना:
let string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here
console.log(string);
यह किसी भी लम्बाई के एक स्ट्रिंग के अंत में '_bar' को हटाने के लिए इस्तेमाल किया जा सकता है।
इसे इस्तेमाल करे:
const myString = "Hello World!";
console.log(myString.slice(0, -1));
कैसा रहेगा:
let myString = "12345.00";
console.log(myString.substring(0, myString.length - 1));
रेगेक्स का उपयोग करें:
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]);
const str = "test!";
console.log(str.slice(0, -1));
यहाँ एक विकल्प है कि मुझे नहीं लगता कि मैंने अन्य उत्तरों में देखा है, सिर्फ मनोरंजन के लिए।
var strArr = "hello i'm a string".split("");
strArr.pop();
document.write(strArr.join(""));
स्लाइस या विकल्प के रूप में सुपाठ्य या सरल नहीं है, लेकिन आपको कुछ अच्छे सरणी तरीकों का उपयोग करके स्ट्रिंग के साथ खेलने की अनुमति देता है, इसलिए जानने के लायक है।
यदि आप अंतिम वर्ण को केवल ट्रिम करने के बजाय, फ़्लोट्स का सामान्य राउंडिंग करना चाहते हैं:
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
संपादित करें: ऐसा लगता है कि पाओलो बताते हैं कि इसके लिए एक निर्मित फ़ंक्शन मौजूद है। यह समाधान स्पष्ट रूप से मेरी तुलना में बहुत साफ है। ParseFloat का उपयोग करें इसके बाद Fixed करें
if(str.substring(str.length - 4) == "_bar")
{
str = str.substring(0, str.length - 4);
}
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 हाई सिएरा v10.13.6 पर Chrome v81.0, Safari v13.1 और फ़ायरफ़ॉक्स v76.0 पर चुने हुए समाधानों का परीक्षण करता हूँ।
slice(0,-1)
(डी) तेज या छोटी और लंबी तार के लिए सबसे तेजी से समाधान है और यह तेजी से पार ब्राउज़र समाधान के रूप में सिफारिश की हैsubstring
(C) औरsubstr
(E) तेज हैंमैं समाधान A , B , C , D , E ( ext ), F , G (my) के लिए दो परीक्षण करता हूं
समाधान स्निपेट के नीचे प्रस्तुत किए गए हैं
यहां संक्षिप्त स्ट्रिंग के लिए Chrome के उदाहरण परिणाम दिए गए हैं
String.prototype.{ split, slice, substr, substring }
UTF-16 एन्कोडेड स्ट्रिंग्स पर काम करते हैंपिछले उत्तरों में से कोई भी यूनिकोड-जागरूक नहीं है। अधिकांश आधुनिक जावास्क्रिप्ट इंजनों में स्ट्रिंग्स को 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
रूप में अच्छी तरह से इस्तेमाल किया जा सकता है (जैसे के बजाय )।
यह भी देखें कि जावास्क्रिप्ट में पात्रों को यूनिकोड स्ट्रिंग कैसे विभाजित किया जाए ।
उदाहरण:
const string = "ẞ🦊";
console.log(Array.from(string).slice(0, -1).join("")); // "ẞ"
console.log([
...string
].slice(0, -1).join("")); // "ẞ"
s
और u
झंडे का प्रयोग करें aRegExp
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
इसे चार "वर्णों" में विभाजित किया जाएगा। यूनिकोड संपत्ति के साथ मिलान संभव है अनुक्रम गुण प्रस्ताव से बच जाता है ।
उन मामलों में जहां आप किसी चीज को हटाना चाहते हैं, जो एक स्ट्रिंग के अंत के करीब है (चर आकार के तार के मामले में) आप स्लाइस () और रूट () को जोड़ सकते हैं।
मेरे पास मार्कअप के साथ एक स्ट्रिंग थी, गतिशील रूप से निर्मित, एंकर टैग की एक सूची के साथ अल्पविराम द्वारा अलग। स्ट्रिंग कुछ इस तरह था:
var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";
अंतिम अल्पविराम को हटाने के लिए मैंने निम्नलिखित कार्य किया:
str = str.slice(0, -5) + str.substr(-4);
@ जेसन एस:
आप स्लाइस का उपयोग कर सकते हैं! आपको बस यह सुनिश्चित करना है कि आप इसका उपयोग करना जानते हैं। सकारात्मक # शुरुआत के सापेक्ष हैं, नकारात्मक संख्या अंत के सापेक्ष हैं।
js> "12345.00" .slice (0, -1) 12345.0
मेरे ग्राफोमनी के लिए क्षमा करें, लेकिन पोस्ट को पहले 'jquery' में टैग किया गया था। इसलिए, आप jQuery के अंदर स्लाइस () का उपयोग नहीं कर सकते क्योंकि स्लाइस () डोम तत्वों के साथ संचालन के लिए jQuery विधि है, न कि सबस्ट्रिंग ... दूसरे शब्दों में जवाब @Jon Erickson कि सुझाव वास्तव में सही समाधान है।
हालाँकि, आपकी विधि सरल जावास्क्रिप्ट के अंदर, jQuery फ़ंक्शन से बाहर काम करेगी। टिप्पणियों में अंतिम चर्चा के कारण कहने की आवश्यकता है, कि jQuery अपने स्वयं के माता-पिता द्वारा ज्ञात ECMAScript की तुलना में JS के बहुत अधिक बार नवीकरणीय विस्तार है।
यहाँ भी दो तरीके मौजूद हैं:
जैसा हमारा:
string.substring(from,to)
प्लस के रूप में अगर 'से' सूचकांक nulled स्ट्रिंग के बाकी देता है। इसलिए:
string.substring(from)
सकारात्मक या नकारात्मक ...
और कुछ अन्य - पदार्थ () - जो प्रतिस्थापन की सीमा प्रदान करते हैं और 'लंबाई' केवल सकारात्मक हो सकती है:
string.substr(start,length)
इसके अलावा कुछ अनुरक्षकों का सुझाव है कि अंतिम विधि string.substr(start,length)
MSIE के लिए त्रुटि के साथ काम नहीं करती है या काम नहीं करती है।
String.prototype.slice
एक मूल विधि है
slice()
डोम हेरफेर के लिए jQuery विधि: jQuery एपीआई: .slice () । AND SURE, जो कि JS Array.slice () की बहुरूपित विरासत की तरह हो सकता है, लेकिन यह दो अलग-अलग विधियां हैं, और मुझे लगता है कि इसे अलग बताने की जरूरत है। तो यह सिर्फ इस ज्ञान के लिए एक अनुमान है।
.slice
एक चर पर कॉल करते हैं जो एक स्ट्रिंग है, तो यह वही करने जा रहा है जो ओपी चाहता था। इससे कोई फर्क नहीं पड़ता कि यह "jQuery के अंदर" है और ऐसा कोई तरीका नहीं है जो किसी भी तरह से "हस्तक्षेप" कर सकता है जब तक आप String.prototype
jQuery के साथ ओवरराइट नहीं करते हैं , जो मुझे यकीन है कि किसी भी जावास्क्रिप्ट कोड को काम करने से रोक देगा। आपका उत्तर सिर्फ यही कहता है कि अन्य उत्तर अच्छा नहीं है और आपके द्वारा दिया गया तर्क गलत है।
.data
हेरफेर करते हैं और इस "स्ट्रिंग" के साथ समाप्त होते हैं), जिसे अगर आपने slice
इसे बुलाया , तो आप जो चाहते हैं वह नहीं करेंगे। उस ने कहा, यह वास्तव में एक उपयोगी जवाब नहीं है।
इसे इस्तेमाल करे:
<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/ पर लाइव वर्किंग उदाहरण भी आज़मा सकते हैं ।
_Bar के बाईं ओर सब कुछ प्राप्त करने के लिए विकल्प का उपयोग करें। लेकिन पहले आपको स्ट्रिंग में _bar का इंस्ट्रूमेंट प्राप्त करना होगा:
str.substring(3, 7);
3 यह है कि प्रारंभ और 7 की लंबाई है।