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


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.