কমা দিয়ে স্ট্রিংকে পূর্ণসংখ্যায় রূপান্তর করুন


95

"1 1,112" কে 1 এর পরিবর্তে পূর্ণসংখ্যা 1112 এ রূপান্তর করার জন্য কি কোনও ঝরঝরে পদ্ধতি আছে?

আমি একটি পেয়েছি, তবে ঝরঝরে নয়:

"1,112".split(',').join.to_i #=> 1112

উত্তর:


176

এ কেমন?

 "1,112".delete(',').to_i

আপনার উত্তরের জন্য ধন্যবাদ. এটি আমার চেয়ে অনেক ভাল। আসলে আমি আশা করছিলাম দুজনের পরিবর্তে একটি কল আসবে। পছন্দ: "1,112"। টু_মনি। উত্তরগুলি পর্যালোচনা করার পরে, সম্ভবত এটির কোনও পদ্ধতি নেই। যাইহোক, অনেক ধন্যবাদ!
এমসিওয়াই

@ মিমিয়ালকোহি আপনি কি আমাকে বলতে পারবেন যে মুছে ফেলুন () জিএসব-তে একই কাজ করার চেয়ে কেন দ্রুত, যা রেজেক্স গ্রহণ করে, আমি সবসময়ই ভেবেছি রেজেক্স উপায়টি দ্রুততর। মৃত্যুদন্ড কার্যকর করার সময়টিতে আমি বিস্তৃত পার্থক্য নিয়ে দু'জনের উপরেই বেঞ্চমার্ক চালিয়েছি।
অভিনেন

4
@ অভিনি আপনার বেঞ্চের চিহ্নগুলি সম্পর্কে: নমুনার আকার? স্ট্রিং সাইজ?
মাইকেল কোহল

5

আপনার কোডটি সঠিকভাবে স্থানীয়ীকৃত হয়েছে তা নিশ্চিত করতে বা ব্যবহারকারীরা "আন্তর্জাতিক" স্বরলিপিতে অভ্যস্ত কিনা তা নিশ্চিত করতে পারেন may উদাহরণস্বরূপ, "1,112" এর অর্থ বিভিন্ন দেশ জুড়ে বিভিন্ন সংখ্যা। জার্মানিতে এর অর্থ হ'ল এক হাজার এবং কিছুর পরিবর্তে সংখ্যাটি কিছুটা বেশি।

সংশ্লিষ্ট উইকিপিডিয়া নিবন্ধটি http://en.wikedia.org/wiki/Decimal_mark এ রয়েছে । এটি যদিও এই সময়ে খারাপ লেখা হয়েছে বলে মনে হয়। একটি চীনা হিসাবে উদাহরণস্বরূপ আমি নিশ্চিত নই যে চীনের হাজার বিভাজক সম্পর্কে এই বিবরণটি এসেছে।


4

আরও কিছু সুবিধাজনক

"1,1200.00".gsub(/[^0-9]/,'') 

এটি পাশাপাশি "1 200 200" কাজ করে


8
আরও ভাল হয় '1,1200.00'.gsub(/[^0-9\.]/,'').to_f
হাউলেথ

7
অপেক্ষা করুন, আপনি কেন রূপান্তর করতে চাইবেন "1,1200.00"করার "1120000"? আপনি কি কেবল ,(বা লোকেলের উপর নির্ভর করে .) এর প্রতিস্থাপন করতে চান না ? এছাড়াও, এটি এটিকে কোনও পূর্ণসংখ্যার বা ভাসমান রূপে রূপান্তর করে না, সীমানা ছাড়াই কেবল একটি স্ট্রিং।
ব্রাইম্যাক

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

4
এই উত্তরটি এমনকি জিজ্ঞাসীর স্ট্রিংটিকে পূর্ণসংখ্যার বা ভাসমান রূপে রূপান্তর করার অনুরোধটিরও সমাধান করে না।
মিঃ ল্যান্স ই স্লোয়ান

2

নিম্নলিখিত আরও একটি পদ্ধতি যা কাজ করবে, যদিও অন্যান্য কয়েকটি পদ্ধতির মতো এটি দশমিক স্থানগুলি ছাঁটাই করবে।

a = 1,112
b = a.scan(/\d+/).join().to_i => 1112


1

যদি কেউ কমা ছাড়াও বেশি কিছু খুঁজে দেওয়ার চেষ্টা করে তবে আমি এর একজন ভক্ত:

"1,200".chars.grep(/\d/).join.to_i

পারফরম্যান্স সম্পর্কে dunno কিন্তু, এটি একটি তুলনায় আরও নমনীয় gsub, অর্থাত:

"1-200".chars.grep(/\d/).join.to_i

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