জাভাস্ক্রিপ্ট স্ট্রিং এবং নম্বর রূপান্তর


90

আমি কীভাবে জাভাস্ক্রিপ্টে নিম্নলিখিতটি করতে পারি?

  1. "1", "2", "3" কে "123" তে সংযুক্ত করুন

  2. "123" কে 123 এ রূপান্তর করুন

  3. 123 + 100 = 223 যোগ করুন

  4. 223 "223" তে প্রচ্ছদ করুন


42
আমি প্রায় সমস্ত জাভাস্ক্রিপ্ট বই এই বিষয়গুলির সাথে ডিল করেছি। তবে ঠিক আছে। প্রশ্নের উত্তর দেওয়া হ'ল স্ট্যাক ওভারফ্লো কী। @ শাদি আলমোসরি - এসও-র একটি "ডোন বিউট" নিয়ম নেই। আমি এখানে প্রশ্ন জিজ্ঞাসা করা লোকেদের হতাশ করার বিন্দুটি দেখতে পাচ্ছি না, কারণ এটি জায়গাটিই।
নোসরেডনা

4
@ নসরডেনা: আমি প্রশ্ন জিজ্ঞাসা করা সম্পূর্ণ বুঝতে পেরেছি, আমি তাদের উত্তর দেওয়ার চেয়ে বেশি কিছুই পছন্দ করি না, তবে আমি মনে করি যে আপনি যে চেষ্টা করেছেন তা শিষ্টাচারের উত্তম শিষ্টাচারের উত্তরটি প্রত্যাশা করা এবং শেখার ব্যক্তিগত অভিজ্ঞতার জন্য আরও ভাল। শুধু আমার মতামত, বোঝার চেষ্টা করছি না! :)
শাদী আলমোসরি

4
@ শাদি, তাহলে প্রশ্নটি কীভাবে করা উচিত ছিল? ইতিমধ্যে উত্তরটির সন্ধানের ঘোষণার সাথে?
নসরেডনা

4
আমি যখন প্রথমবার এটি দেখেছিলাম তখন এটি আমাকে এক ধরণের হোমওয়ার্ক হিসাবে চিহ্নিত করেছিল, তবে আমি যখন এটি পুনরায় পাঠ করেছি তখন আমি ভেবে দেখিনি, মনে হচ্ছে কেউ জাভাস্ক্রিপ্টে পরীক্ষা নিরীক্ষা করছে এবং অপ্রত্যাশিত ফলাফল পেয়েছে এবং এটি পেরেক করতে চায়। এটি বলেছিল, আমি আশ্চর্য হয়েছি যে স্ট্যাকওভারফ্লো / ফাক এ শিক্ষার্থীদের জন্য সম্মানের কোডের মতো কিছু অন্তর্ভুক্ত থাকতে পারে। আমরা এখানে একটি বিশ্বব্যাপী বিশ্ববিদ্যালয়, এবং আমি মনে করি না যে এই জায়গার জন্য নীতিশাস্ত্রের সেট কী হতে পারে তা চেষ্টা করার জন্য এটি পাগল নয়। বা হতে পারে এটি পাগল। :-)
আর্টলং

6
@ শাদী, ভাল, ইতিবাচক দিক থেকে, প্রশ্নোত্তর স্ট্যাকওভারফ্লোতে রয়েছে এবং আশা করি অন্যান্য লোকদের সহায়তা করবে। আমি দেখি লোকেরা সমস্ত সময় এই জিনিসগুলিতে আটকে থাকে, বিশেষত জাভার মতো ভাষা থেকে আসা। লোকেরা এটিকে বারবার জিজ্ঞাসা করার একটি কারণ রয়েছে - এটি কারণ কারণ তারা মনে করে যে তারা জাভাস্ক্রিপ্টে প্রকাশ কীভাবে কাজ করে তা তারা জানে তবে তারা তা করে না। তারা জেএসের বাইরের অভিজ্ঞতার ভিত্তিতে অনুমান করে। এজন্য স্ট্রিংস এবং সংখ্যা যুক্ত করার চেষ্টা এবং একাট্টা প্লাস এবং বিয়োগের চেষ্টা করে কয়েকটি সাধারণ পরীক্ষার চেষ্টা করে বসে থাকা এত দরকারী।
নসরেডনা

উত্তর:


120

আপনি parseInt()এবং সাথে পরিচিত হতে চান toString()

এবং আপনার টুলকিটে দরকারী এটি কী ধরণের তা জানতে একটি ভেরিয়েবলের দিকে নজর দেওয়া হবে— typeof:

<script type="text/javascript">
    /**
     * print out the value and the type of the variable passed in
     */

    function printWithType(val) {
        document.write('<pre>');
        document.write(val);
        document.write(' ');
        document.writeln(typeof val);
        document.write('</pre>');
    }

    var a = "1", b = "2", c = "3", result;

    // Step (1) Concatenate "1", "2", "3" into "123"
    // - concatenation operator is just "+", as long
    //   as all the items are strings, this works
    result = a + b + c;
    printWithType(result); //123 string

    // - If they were not strings you could do
    result = a.toString() + b.toString() + c.toString();
    printWithType(result); // 123 string

    // Step (2) Convert "123" into 123
    result = parseInt(result,10);
    printWithType(result); // 123 number

    // Step (3) Add 123 + 100 = 223
    result = result + 100;
    printWithType(result); // 223 number

    // Step (4) Convert 223 into "223"
    result = result.toString(); //
    printWithType(result); // 223 string

    // If you concatenate a number with a 
    // blank string, you get a string    
    result = result + "";
    printWithType(result); //223 string
</script>

কোনও বিশেষ কারণে আপনি এটিকে স্ক্রিপ্ট ট্যাগগুলিতে রেখেছেন?
জুলিক্স

@ জুলিক্স ২০০৯ সালে নবাগতদের জন্য, একটি প্রাথমিক ধারণাটি শিখতে এইচটিএমএল ফাইলে চলা। আমি যদি আজ এই টাটকা উত্তর দিই তবে আমি এটি অন্যভাবে করতে পারি, তবে সম্ভবত তা নাও।
আর্টলুং

53

পদক্ষেপ (1) "123" তে "1", "2", "3" কে কনটেনেট করুন

 "1" + "2" + "3"

বা

 ["1", "2", "3"].join("")

যোগদানের পদ্ধতি যোগসূত্র একটি স্ট্রিং মধ্যে একটি অ্যারের আইটেম, আইটেম মধ্যে নির্দিষ্ট বিভেদক নির্বাণ। এই ক্ষেত্রে, "ডিলিমিটার" একটি খালি স্ট্রিং ( "")।


পদক্ষেপ (2) "123" কে 123 এ রূপান্তর করুন

 parseInt("123")

ECMAScript 5 এর আগে , বেস 10 এর জন্য রেডিক্সটি পাস করা প্রয়োজন:parseInt("123", 10)


পদক্ষেপ (3) 123 + 100 = 223 যোগ করুন

 123 + 100


পদক্ষেপ (4) 223 "223" এ প্রচ্ছদ করুন

 (223).toString() 


এটি সব টোগের রাখুন

 (parseInt("1" + "2" + "3") + 100).toString()

বা

 (parseInt(["1", "2", "3"].join("")) + 100).toString()

4
সুন্দর, স্পষ্ট উদাহরণ। এছাড়াও, ভাল ফর্মের জন্য কুডোস - আপনার ফাংশনের জন্যparseInt সর্বদা রেডিক্স নির্দিষ্ট করা উচিত ।
হটশট 309

রেডিক্স সহ আমাকে বিভ্রান্ত করেছিল এবং আমি অন্য একটি উত্তরে স্ক্রোল করেছিলাম যেখানে এটি ব্যাখ্যা করা হয়েছিল। বিভ্রান্তির মুহূর্তে সঠিক হতে একটি দ্রুত ব্যাখ্যায় সম্পাদিত।
আর্টঅফ ওয়ারফেয়ার

@ আর্টঅফ ওয়ারফেয়ার ধন্যবাদ, ভাল সম্পাদনা। এই উত্তরের সময় মূলসূত্রটি প্রয়োজনীয় ছিল। আজকাল, আমি এটি ছেড়ে দিতে একটি যুক্তি তৈরি করতে পারি। ES5 হিসাবে, যা সমস্ত "আধুনিক" ব্রাউজার এবং নোড.জেএস সমর্থন করে, পার্সেন্ট (কেবলমাত্র 0-9> সহ একটি স্ট্রিং) সর্বদা বেস 10 ব্যবহার করে
প্যাট্রিক ম্যাকএলহানি

মজাদার ঘটনা .. নেটস্কেপের আসল জাভাস্ক্রিপ্টে (প্রায় 1995) পার্সইন্টের জন্য ডিফল্ট রেডিক্স ছিল 8 (স্ট্রিংটি না থাকলে এবং 8 বা একটি 9)
জাস্টিন ওহমস

27
r = ("1"+"2"+"3")           // step1 | build string ==> "123"
r = +r                      // step2 | to number    ==> 123
r = r+100                   // step3 | +100         ==> 223
r = ""+r                    // step4 | to string    ==> "223"

//in one line
r = ""+(+("1"+"2"+"3")+100);

দ্রুত স্ট্রিং -> নম্বর রূপান্তর
এমকন্ট

যদি আপনি এটি পরীক্ষা করে থাকেন তবে এটি একটি নম্বর বা না থাকলে পার্সেন্ট () ব্যবহার করুন। উদাহরণস্বরূপ, parseInt ("") NaN, তবে + "" 0 হয়!
গ্রীন

15

এই প্রশ্নগুলি জাভাস্ক্রিপ্টের টাইপিং সিস্টেমের কারণে সব সময় আসে। লোকেরা মনে করে যে তারা যখন একটি সংখ্যার স্ট্রিং পাচ্ছে তারা একটি নম্বর পাচ্ছে।

এখানে জাভাস্ক্রিপ্ট যেভাবে স্ট্রিং এবং সংখ্যার সাথে ডিল করে তার সদ্ব্যবহার করে এমন কিছু জিনিস আপনি দেখতে পাচ্ছেন। ব্যক্তিগতভাবে, আমি আশা করি জাভাস্ক্রিপ্টটি ছাড়াও অন্য কোনও চিহ্ন ব্যবহার করা হয়েছিল + + স্ট্রিং কনকেন্টেশনের জন্য ।

পদক্ষেপ (1) "123" তে "1", "2", "3" কে কনটেনেট করুন

result = "1" + "2" + "3";

পদক্ষেপ (2) "123" কে 123 এ রূপান্তর করুন

result = +"123";

পদক্ষেপ (3) 123 + 100 = 223 যোগ করুন

result = 123 + 100;

পদক্ষেপ (4) 223 কে "223" তে রূপান্তর করুন

result = "" + 223;

আপনি যদি এই কাজটি কেন জানেন তবে আপনার জাভাস্ক্রিপ্ট এক্সপ্রেশন নিয়ে সমস্যা হওয়ার সম্ভাবনা কম less


4
আমি আসলে এটি অত্যন্ত খারাপ অনুশীলন বলে মনে করি কারণ এটি চলার বিষয়ে মোটামুটি অস্বচ্ছ। নির্দিষ্ট ক্রিয়াকলাপগুলি অন্তর্নিহিত castালাকে প্রভাবিত করে তা জেনে রাখা একটি কৌশল এবং এটি একটি ভাল, তবে এটি মোটেই পঠনযোগ্য নয়। যোগাযোগ সব কিছু।
অন্নাকাটা

4
আমি মনে করি এই বিষয়গুলি যথাযথভাবে জানা জরুরী তাই আপনি কোডটি পড়ার সময় কী হবে তা আপনি জানেন। অনেকগুলি জাভাস্ক্রিপ্ট সংশ্লেষিত কারণ এটি উত্স হিসাবে প্রেরণ করা হয়েছে এবং ছোট কোডের অর্থ সার্ভারের ব্যয় হ্রাস হতে পারে।
নসরেডনা

6
আপনার কম্প্রেশন সরঞ্জামগুলির মাধ্যমে এটি অর্জন করা উচিত, যদিও এই ফর্মটিতে এটি রক্ষণাবেক্ষণের খুব বাস্তব ব্যয়ে অনুকূলিতকরণ।
অন্নাকাটা

6
তবুও, এই জিনিসগুলি জানার ফলে প্রশ্নটি প্রথম স্থানে আটকাতে সহায়তা করবে, যা জাভাস্ক্রিপ্ট স্ট্রিংস এবং সংখ্যার সাথে কীভাবে আচরণ করে সে সম্পর্কে জ্ঞানের অভাব ছিল। এটি বৌদ্ধিক কৌতূহলের বিষয়। আমি যখন স্ট্রিংয়ে একটি সংখ্যা যুক্ত করি তখন কী হয়? আনরি প্লাস কীভাবে কাজ করে? যদি আপনি উত্তরগুলি জানেন না, আপনি সত্যিই জাভাস্ক্রিপ্ট জানেন না, এবং এই জাতীয় প্রশ্ন আসবে।
নসরেডনা

11

আপনি এটি এর মতো করতে পারেন:

// step 1 
var one = "1" + "2" + "3"; // string value "123"

// step 2
var two = parseInt(one); // integer value 123

// step 3
var three = 123 + 100; // integer value 223

// step 4
var four = three.toString(); // string value "223"

16
পার্সিয়ান্ট () ফাংশনে Radix প্যারামিটার যুক্ত করা ভাল অনুশীলন হবে। সুতরাং, পার্সিয়ান্ট (এক, 10) আশ্বাস দেয় যে আপনি এটিকে যা ফেলবেন তা ভুল রূপান্তরিত হবে না।
আর্টলং

4
রাজি। অন্যথায়, শুরু হওয়া মানগুলি অষ্টাল (বেস -8) নম্বর 0হিসাবে দেখা যাবে ।
হটশট 309

4
এমনকি আরও অপ্রত্যাশিত, মান দিয়ে শুরু 0এবং তারপর ধারণকারী 8বা 9ব্যর্থ হবে, 0. যেমন একটি ফিরতি নেতৃস্থানীয়, parseInt('034') = 28এবং parseInt('09') = 0
রবার্ট মার্টিন

9

একটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করতে, 0 বিয়োগ করুন। সংখ্যাকে একটি স্ট্রিংয়ে রূপান্তর করতে, "" (ফাঁকা স্ট্রিং) যুক্ত করুন।

5 + 1 আপনাকে 6 দেবে

(5 + "") + 1 আপনাকে "51" দেবে

("5" - 0) + 1 আপনাকে 6 দিবে


4
ভাষা কোয়ার্কের উপর নির্ভর করে কৌশলগুলির উপর নির্ভর করা প্রকৃত অস্পষ্টতার দিকে নিয়ে যেতে পারে। যেমন "5" -0 এর ফলস্বরূপ 5 নম্বর হয় তবে "5" +0 এর ফলাফল "50" হয়। (হ্যাঁ আমি জানি এটি বহু বছর পরে এবং সম্ভবত এটি পড়ার পরেও কিছুটা দুঃখ হয়েছে))
নিক রাইস

6

পার্সিয়ান্টটি স্ক্যানফের মতো দূষিত:

parseInt ("12 বানর", 10) '12' এর মান সহ একটি সংখ্যা
"12 বানর" এমন একটি সংখ্যা যার সাথে 'নাএন' মান রয়েছে
সংখ্যা ("12 বানর") 'এনএন' মান সহ একটি সংখ্যা


1

নীচে জাভাস্ক্রিপ্ট কীভাবে আপনাকে সমস্যায় ফেলতে পারে তার একটি খুব বিরক্তিকর উদাহরণ:

আপনি যদি শুধু ব্যবহার করার চেষ্টা করেন parseInt() সংখ্যায় রূপান্তর করার এবং তারপরে ফলাফলটিতে অন্য একটি সংখ্যা যুক্ত করেন তবে এটি দুটি স্ট্রিংকে সংযুক্ত করবে।

তবে, আপনি নীচের উদাহরণে দেখানো হিসাবে বন্ধনীর মধ্যে যোগফলটি রেখে সমস্যার সমাধান করতে পারেন ।

ফলাফল: তাদের বয়স যোগফল: 98; তাদের বয়সের যোগফল নয়: 5048

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

var myFather = new Person("John", "Doe", "50", "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

document.getElementById("demo").innerHTML = "Their age sum is: "+
 (parseInt(myFather.age)+myMother.age)+"; Their age sum is NOT: " +
 parseInt(myFather.age)+myMother.age; 
</script>

</body>
</html>


0

আপনি যখন একটি পূর্ণসংখ্যার একটি স্ট্রিং করতে চান তখন সবচেয়ে সহজ

var a,b, c;
a = 1;
b = a.toString(); // This will give you string

এখন ভেরিয়েবল বি থেকে টাইপ স্ট্রিংয়ের মাধ্যমে আমরা পূর্ণসংখ্যা পেতে পারি

c = b *1; //This will give you integer value of number :-)

আপনি যদি উপরে চেক করতে চান তবে একটি নম্বর। আপনি যদি নিশ্চিত না হন যে বিতে পূর্ণসংখ্যা রয়েছে তবে আপনি ব্যবহার করতে পারেন

if(isNaN(c*1)) {
  //NOt a number
}
else //number

0

আমরা প্রথমে সংখ্যায় রূপান্তর করতে এবং কেবল যুক্ত করে আনরি প্লাস অপারেটর ব্যবহার করে এটি করতে পারি । নিচে দেখ:-

var a = "4";
var b = "7";
var sum = +a + +b; 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.