আমি কীভাবে স্ট্রিং থেকে অ অক্ষরের অক্ষরগুলি ছাঁটাই করব এবং ফাঁকা স্থান রাখব?


99

আমি একটি রেইজেক্স তৈরি করতে চাই যা সমস্ত অ-আলফানম্বার অক্ষর সরিয়ে দেয় তবে ফাঁকা রাখে। এটি ডিবিতে হিট হওয়ার আগে অনুসন্ধানের ইনপুটটি পরিষ্কার করতে হয়। আমার এখন পর্যন্ত যা আছে তা এখানে:

@search_query = @search_query.gsub(/[^0-9a-z]/i, '')

এখানে সমস্যা হ'ল এটি সমস্ত স্থান সরিয়ে দেয়। ফাঁকা স্থান ধরে রাখতে কীভাবে সমাধান?


আমি রেলের উন্নয়ন করি না, তবে কেন আপনি ব্যর্থদের স্যানিটাইজেশন করতে দিতে পারবেন না?
— অ্যান্ড্রু গ্রিম

উত্তর:


189

অবহেলিত অক্ষর গোষ্ঠীতে স্পেস যুক্ত করুন:

@search_query = @search_query.gsub(/[^0-9a-z ]/i, '')

4
খালি জায়গাটি আমার পক্ষে কাজ করে না, সুতরাং '' গুলি 'একটি বিকল্পও হতে পারে: @ সন্ধান_কোয়ার.ডসব (/ [^ 0-9a-z \\ s] / i,' ')
— ডেভিড ডগলাস

6
কিছুটা কম @search_query.gsub!(/[^0-9a-z ]/i, '')
— শব্দযুক্ত

4
সুনির্দিষ্টভাবে বলতে গেলে, এটি সমস্ত উচ্চারণকৃত বর্ণগুলি সরিয়ে দেয় এবং কিছু ভাষায় মানিয়ে নিতে পারে না।
— ইউলব

@ ডেভিডডগলাস এটি হওয়া উচিত \sনয়\\s
— ডেক্স

9

এই ক্ষেত্রে আমি স্থায়ীভাবে ইনপুট পরিষ্কার করার জন্য ঠুং ঠুং শব্দটি (gsub এর পরিবর্তে gsub!) ব্যবহার করব।

#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/\W/,'')

এটি এমন পরিস্থিতি এড়ায় যেখানে @seach_query কোডটি পরিষ্কার না করেই অন্য কোথাও ব্যবহার করা হয়।


4
কিছু না মিলে ঠেলা ভার্শনটি শূন্য করবে। সম্ভবত আপনি যে ফলাফলটি চেয়েছিলেন বা আশা করতে পারেন তা নয়। দস্তাবেজগুলি থেকে "স্ট্রিং # জিএসবির বিকল্পগুলি স্থানে সম্পাদন করে, স্ট্রিং ফেরত পাঠাও, বা কোনও বিকল্প প্রতিস্থাপন না করা হলে শূন্য করতে হবে no
— dft

4
তার উদাহরণে রিটার্ন মান ব্যবহার হয় না, তাই এটি বেশ অপ্রাসঙ্গিক।
— জাপ হাগম্যানস

3

আমি অন্তর্ভুক্তি পদ্ধতির ব্যবহার করতে হবে। সংখ্যা ব্যতীত সমস্ত বাদ না দিয়ে আমি কেবল সংখ্যাগুলি অন্তর্ভুক্ত করতাম। যেমন

@search_query.scan(/[\da-z\s]/i).join

0

সম্ভবত এটি এই ধরনের ক্ষেত্রে কাজ করবে:

# do not replace any word characters and spaces
@search_query = @search_query.gsub(/[^\w ]/g, '')

-3

এর চেয়ে ভাল উত্তর (কমপক্ষে রুবিতে):

@search_query.gsub!(/^(\w|\s*)/,'')

4
এটি (ক) একটি একক শব্দের অক্ষর বা (খ) স্ট্রিংয়ের শুরু থেকে কোনও সংখ্যা সাদা করতে পারে। সম্পূর্ণরূপে প্রশ্নের সাথে সম্পর্কিত নয় এবং তাই কোনও উত্তর নয়।
— সিগি

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