আমার একটি স্ট্রিং আছে 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);
এটি গ্রহণযোগ্য উত্তর, তবে নীচের কথোপকথন অনুসারে, স্লাইস বাক্য গঠনটি আরও পরিষ্কার are
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.leth ব্যবহার করে?
আপনি জাভাস্ক্রিপ্ট স্ট্রিং অবজেক্টগুলির সাবস্ট্রিং পদ্ধতিটি ব্যবহার করতে পারেন :
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);
এটি কোনও দৈর্ঘ্যের একটি স্ট্রিংয়ের শেষে '_বার' অপসারণ করতে ব্যবহৃত হতে পারে।
একটি নিয়মিত প্রকাশ যা আপনি সন্ধান করছেন:
let str = "foo_bar";
console.log(str.replace(/_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
সম্পাদনা: মনে হচ্ছে পাওলো যেভাবে দেখিয়েছে এটির জন্য এখানে একটি বিল্ট ফাংশন রয়েছে exists সমাধানটি আমার থেকে অবশ্যই পরিষ্কার। ব্যবহারের parseFloat দ্বারা অনুসরণ toFixed
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 আমি ম্যাকওস হাই সিয়েরা ভি 10.13.6 এ ক্রোম ভি 81.0, সাফারি ভি 13.1 এবং ফায়ারফক্স ভি 76.0 এ নির্বাচিত সমাধানগুলির পরীক্ষা করে নিই।
slice(0,-1)
(ঘ) দ্রুত বা স্বল্প ও দীর্ঘ স্ট্রিং জন্য দ্রুততম সমাধান এবং এটি দ্রুত ক্রস ব্রাউজার সমাধান হিসেবে সুপারিশ করা হয়substring
(সি) এবং এরsubstr
(ই) দ্রুতআমি এ , বি , সি , ডি , ই ( এক্সট্রা ), এফ , জি (আমার) সমাধানের জন্য দুটি পরীক্ষা করে থাকি
সমাধানগুলি নীচে স্নিপেটে উপস্থাপন করা হয়
সংক্ষিপ্ত স্ট্রিংয়ের জন্য Chrome এর উদাহরণ ফলাফল এখানে
String.prototype.{ split, slice, substr, substring }
UTF-16 এনকোডযুক্ত স্ট্রিংগুলি চালিত হন তা অবগত হনপূর্ববর্তী উত্তরগুলির কোনওটিই ইউনিকোড-সচেতন নয়। স্ট্রিংগুলি বেশিরভাগ আধুনিক জাভাস্ক্রিপ্ট ইঞ্জিনগুলিতে ইউটিএফ -16 হিসাবে এনকোড করা হয়, তবে উচ্চতর ইউনিকোড কোড পয়েন্টগুলির জন্য সার্গেট জোড় প্রয়োজন , তাই প্রবীণ, প্রাক-বিদ্যমান স্ট্রিং পদ্ধতিগুলি ইউটিএফ -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
ফ্ল্যাগ ব্যবহার করুন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
চারটি "অক্ষরে" বিভক্ত হবে। সেগুলি মিলিয়ে ইউনিকোড সম্পত্তি সিকোয়েন্স প্রোপার্টি প্রস্তাবে পালিয়ে যায় ।
যে ক্ষেত্রে আপনি স্ট্রিংয়ের শেষের নিকটে থাকা কিছু (ভ্যারিয়েবল সাইজের স্ট্রিংয়ের ক্ষেত্রে) স্লাইস () এবং সাবস্ট্রাস্ট () সংযুক্ত করতে পারেন এমন কিছু সরিয়ে দিতে চান।
আমার মার্কআপের সাথে একটি স্ট্রিং ছিল, গতিময়ভাবে নির্মিত, অ্যাঙ্কার ট্যাগগুলির একটি তালিকা কমা দ্বারা পৃথক করা হয়েছিল। স্ট্রিংটি এমন ছিল:
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"। স্লাইস (0, -1) 12345.0
আমার গ্রাফিকম্যানির জন্য দুঃখিত তবে পোস্টটি 'jquery' আগে ট্যাগ করা হয়েছিল। সুতরাং, আপনি jQuery এর ভিতরে স্লাইস () ব্যবহার করতে পারবেন না কারণ স্লাইস () হ'ল ডম উপাদানগুলির সাথে ক্রিয়াকলাপের জন্য jQuery পদ্ধতি, সাবস্ট্রিং নয় ... অন্য কথায় উত্তর দিন জোন ইরিকসন সত্যিই নিখুঁত সমাধানের পরামর্শ দেয়।
যাইহোক, আপনার পদ্ধতিটি সহজ জাভাস্ক্রিপ্টের ভিতরে, jQuery ফাংশন থেকে কাজ করবে works মন্তব্যে সর্বশেষ আলোচনার কারণে বলার দরকার আছে যে jQuery তার নিজের পিতা-মাতার সবচেয়ে বেশি পরিচিত ECMAScript থেকে জেএসের পুনর্নবীকরণযোগ্য এক্সটেনশন।
এখানে দুটি পদ্ধতিও বিদ্যমান:
আমাদের হিসাবে:
string.substring(from,to)
হিসাবে 'if' সূচক nulled বাকী স্ট্রিং ফিরে আসে। সুতরাং:
string.substring(from)
ইতিবাচক বা নেতিবাচক ...
এবং কিছু অন্যান্য - সাবস্ট্রাস্টার () - যা সাবস্ট্রিং এবং 'দৈর্ঘ্যের' পরিসীমা সরবরাহ করে কেবল ইতিবাচক হতে পারে:
string.substr(start,length)
এছাড়াও কিছু রক্ষণাবেক্ষণকারী পরামর্শ দিচ্ছেন যে শেষ পদ্ধতিটি string.substr(start,length)
MSIE এর জন্য ত্রুটি নিয়ে কাজ করে না বা কাজ করে না।
String.prototype.slice
একটি স্থানীয় পদ্ধতি
slice()
ম্যানিপুলেশনের জন্য jQuery পদ্ধতি: jQuery এপিআই: .স্লাইস () । এবং স্যুর, এটি জেএস অ্যারে.স্লাইস () এর বহুসত্ত্বা উত্তরাধিকারের মতো চিত্রিত করা যেতে পারে তবে এটি দুটি ভিন্ন পদ্ধতি এবং আমার মনে হয় এটিকে আলাদা করে বলা দরকার। সুতরাং এটি এই জ্ঞানের প্রায় একটি অনুমান।
.slice
কোনও ভেরিয়েবলের কাছে কল করেন যে এটি একটি স্ট্রিং, এটি ওপি যা চেয়েছিল তা করতে চলেছে। এটি "jQuery এর অভ্যন্তরে" আছে কিনা তা বিবেচ্য নয় এবং আপনি String.prototype
jQuery দিয়ে ওভাররাইট না করলে কোনওভাবেই এটি "হস্তক্ষেপ" করতে পারে না , যা আমি নিশ্চিত যে কোনও জাভাস্ক্রিপ্ট কোডটি কাজ করা থেকে বিরত রাখবে I আপনার উত্তরটি কেবলমাত্র বলে যে অন্যান্য উত্তর ভাল নয় এবং আপনি যে যুক্তিটি সরবরাহ করেন তা ভুল।
.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/ এ লাইভ ওয়ার্কিং উদাহরণটি চেষ্টা করতে পারেন ।
_বারের বামে সমস্ত কিছু পেতে স্ট্রিং ব্যবহার করুন। তবে প্রথমে আপনাকে স্ট্রিংটিতে _ বারের ইনস্ট্রটারটি পেতে হবে:
str.substring(3, 7);
3 যে শুরু এবং 7 দৈর্ঘ্য হয়।