সব সাদা জায়গা মুছে ফেলার জন্য রুবি ফাংশন?


573

সমস্ত সাদা জায়গা অপসারণ করতে রুবি ফাংশনটি কী ? আমি পিএইচপি এর মতো কিছু খুঁজছি trim()?


36
আপনার প্রশ্নটি পরিষ্কার নয়: আপনি কি সমস্ত শ্বেতস্থান সরিয়ে ফেলতে চান বা আপনি শীর্ষস্থানীয় এবং অনুসরণ করা শ্বেত স্থান থেকে মুক্তি পেতে চান?
সিনান Ünür

25
পিএইচপি-র trim()স্ট্রিপস সাদা স্টেসটি " স্ট্রিংয়ের শুরু এবং শেষ থেকে " ( ডকুমেন্টেশনের মধ্যে বর্ণিত হিসাবে ), এটি "সমস্ত সাদা স্থান" সরিয়ে দেয় না।
টেডেক

3
সন্দেহ হলে, স্ট্রিং ক্লাসের জন্য রুবি অনলাইন ডকুমেন্টেশনটি দেখুন (নীচে। স্ট্রিপ দেখুন)।
Merovex

2
মনে রাখবেন যে সমস্ত উত্তর ব্যবহার করে String#stripবা মিলছে /\s+/কেবলমাত্র ASCII সাদা স্থান সরিয়ে ফেলবে। আপনি যদি নিশ্চিত করতে চান যে কোনও অ- &nbspএসকিআইআই শ্বেতস্পেস খুব ক্যাপচার হয়েছে (যেমন এইচটিএমএল এর ) @EBooker এর অদ্ভুতভাবে অপ্রিয় উত্তরটি দেখুন।
MatzFan

1
দুঃখের বিষয় যে এইরকম দুর্দান্ত উত্তরগুলি একজনের চূড়ান্ত মর্যাদা গ্রহণ করতে পারে না
নিউ আলেকজান্দ্রিয়া

উত্তর:


846

আপনি যদি কেবলমাত্র শীর্ষস্থানীয় এবং চলমান শ্বেত স্পেস (পিএইচপি-র ট্রিমের মতো) .stripঅপসারণ করতে চান তবে আপনি যদি সমস্ত সাদা স্থান সরিয়ে নিতে চান তবে আপনি .gsub(/\s+/, "")পরিবর্তে ব্যবহার করতে পারেন ।


5
"/ \ S + /" সরল মানে কি সাদা অংশ আছে?
পাগল শিক্ষানবিস

54
। s + এর অর্থ 1 বা একাধিক শ্বেতস্পেস অক্ষর (স্থান, নিউলাইন, ট্যাব)। আশেপাশের // এটি দেখায় যে এটি একটি নিয়মিত প্রকাশ।
dylanfm

3
এটি ট্রিম () এর সমতুল্য নয়
ব্রেট হল্ট

6
স্ট্রিপটি ঠিক আমি যা খুঁজছিলাম তা ছিল, ভাল প্রশ্ন এবং অজানার জন্য ধন্যবাদ!
ফ্রাঙ্কোইস

15
@ ব্র্যাটহোল্ট জিসব এক্সপ্রেশনটি ট্রিমের মতো নয়, তবে প্রশ্নকর্তায় "সমস্ত সাদা অংশ" শব্দটি অন্তর্ভুক্ত ছিল, যা ট্রিমের মতো নয়। তাই আমি বিকল্প দিয়েছি।
joel.neely

494
s = "I have white space".delete(' ')

এবং পিএইচপি এর trim()ফাংশন অনুকরণ করতে :

s = "   I have leading and trailing white space   ".strip

12
এটি রেগেক্সের চেয়ে অনেক বেশি পঠনযোগ্য, কেন এটি এত জনপ্রিয় নয়?
স্কারবাবাস

89
@ কার্ববাস: কারণ অনেক লোক সাধারণ সমস্যার জন্য অতিরিক্ত জটিল সমাধান পছন্দ করেন। এটি অভিজ্ঞতা নিয়ে চলে যায়।
এড এস

97
@ কার্ববাস @ এড এস। এটি জনপ্রিয় নয় কারণ এটি এক নয়। মূল প্রশ্নটি "সমস্ত সাদা স্থান" বাক্যাংশটি ব্যবহার করেছে, যার মধ্যে ট্যাবস, নিউলাইনস ইত্যাদি অন্তর্ভুক্ত রয়েছে proposed এই প্রস্তাবিত উত্তরটি other অন্যান্য সাদা স্থানের অক্ষরগুলিকে সরিয়ে ফেলবে না। "অত্যধিক জটিল" হিসাবে, আমি সাধারণ নিয়মিত অভিব্যক্তিটির সাথে তুলনা করার পরামর্শ দিই .delete(' ').delete('\t').delete('\n') ..., যা অত্যধিক ভার্বোস এবং টাইপস এবং বাদ দেওয়ার ত্রুটির জন্য অনেকগুলি সুযোগ সরবরাহ করে।
joel.neely

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

4
@ জোয়েল.নিলি: এটি বলেছে যে, আমি সম্মত হই যে প্রশ্নের সমাধানের সমাধানের ফলে যা প্রশ্নের আক্ষরিক ব্যাখ্যার বাইরে চলে যায় তা এই ক্ষেত্রে ভাল (যেমন, একটি রেজেক্স সমস্ত অক্ষর মুছে ফেলা যা delete()কলগুলির একটি স্ট্রিংয়ের পরিবর্তে সাদা জায়গা তৈরি করে।)
এড এস

163

সম্পর্কিত উত্তর:

"   clean up my edges    ".strip

আয়

"clean up my edges"

এটাই আমি ভুলে গিয়েছিলাম। আমি জানতাম যে শ্বেতস্পেস অপসারণের জন্য একটি পদ্ধতি রয়েছে যা কোনও যুক্তি পাস না হলে ডিফল্টরূপে এটি করবে। +1
এড এস

এটি ছাঁটাইয়ের সমতুল্য। উপরের @ টেডেকের উদ্ধৃতিটি দেখুন।
ব্রেট হল্ট

3
যদি ভেরিয়েবলের সম্ভাবনা থাকে তবে স্ট্রিপটি nilচালানোর .to_sআগে পদ্ধতিটি চালানোর বিষয়ে নিশ্চিত হন যাতে স্ট্রিপ পদ্ধতিটি ত্রুটি না বাড়ায়। যাত্রা। str=nil; str.to_s.strip #=> ""
স্কার্ভার 2

আমি কিছু_ডাটা.স্ট্রিপ পছন্দ করি! যদি কিছু_ডাটা.আইস_এ? স্ট্রিং
slindsey3000

156

String#strip - শুরু এবং শেষ থেকে সমস্ত সাদা স্থান সরিয়ে ফেলুন।

String#lstrip - ঠিক প্রথম থেকেই।

String#rstrip - ঠিক শেষ থেকে।

String#chomp(কোনও যুক্তি ছাড়াই) - শেষ থেকে লাইন বিভাজক ( \nবা \r\n) মুছে দেয়।

String#chop - শেষ চরিত্রটি মুছে দেয়।

String#delete- x.delete(" \t\r\n")- সমস্ত তালিকাভুক্ত সাদা স্থান মুছে দেয়।

String#gsub- x.gsub(/[[:space:]]/, '')- সব হোয়াইটস্পেস সরিয়ে ফেলা সহ ইউনিকোড বেশী


দ্রষ্টব্য : উপরের সমস্ত পদ্ধতিগুলি মূলটিকে পরিবর্তিত করার পরিবর্তে একটি নতুন স্ট্রিং দেয়। আপনি যদি জায়গায় স্ট্রিংটি পরিবর্তন করতে চান !তবে শেষের সাথে সংশ্লিষ্ট পদ্ধতিটিতে কল করুন ।


স্ট্রিং # মোছার উদাহরণটি একটি রেজিক্স ব্যবহার করে দেখা যাচ্ছে, তবে \sস্ল্যাশের পরিবর্তে উদ্ধৃতিতে রয়েছে। এছাড়াও ডকুমেন্টেশনে আমি এমন কোনও উল্লেখ পাইনি যা মুছলে মুছে ফেলা একটি আর্গুমেন্ট হিসাবে একটি রেজেক্স নিতে পারে।
slothbear

@ স্লোথবার, এটি কোনও রেইজেক্স নয়, এটি একটি নিদর্শনগুলির একটি ছোট সেট যা রেজেক্সসের সাথে সাদৃশ্যপূর্ণ। ডকুমেন্টেশন হিসাবে #deleteঅনুরূপ কাজ করতে বলা হয় #count। আপনি এটি কনসোলেও চেষ্টা করতে পারেন।
ndnenkov

আমাকে নতুন কিছু শেখানোর জন্য ধন্যবাদ এবং ক্ষুদ্রতম সম্ভাব্য প্রসঙ্গে (কমান্ড লাইন) জিনিসগুলি চেষ্টা করার জন্য অনুস্মারকটির জন্য ধন্যবাদ।
slothbear

1
@ সিনিপসিস আমি এই উত্তরটি কেবল রুবিকেই রাখতে চেয়েছিলাম।
ndnenkov

2
এই উত্তরের কেবলমাত্র চূড়ান্ত উদাহরণটি ওয়েব স্ক্র্যাপারদের নিষ্ক্রিয় ASCII 160 'নন-ব্রেকিং স্পেস' ক্যাচ করে। #stripনা. দেখুন stackoverflow.com/questions/4859438/...
MatzFan

95
"1232 23 2 23 232 232".delete(' ')
=> "123223223232232"

মুছে ফেলা দ্রুত কাজ করে =)

user         system     total      real
gsub, s      0.180000   0.010000   0.190000 (0.193014)
gsub, s+     0.200000   0.000000   0.200000 (0.196408)
gsub, space  0.220000   0.000000   0.220000 (0.222711)
gsub, join   0.200000   0.000000   0.200000 (0.193478)
delete       0.040000   0.000000   0.040000 (0.045157)

1
তবে এটি কেবল সরিয়ে দেয় spaces, সমস্তই নয়white spaces
গ্যাভরিয়েল

1
delete(" \t\r\n")টিপিকাল হোয়াইটস্পেসের যত্ন নেবে এবং gsub এর চেয়েও দ্রুত।
শেঠ জেফারি

94

আপনি যদি রেলস / অ্যাক্টিভসপোর্ট ব্যবহার করে থাকেন তবে আপনিsquish পদ্ধতিটি ব্যবহার করতে পারেন । এটি স্ট্রিংয়ের উভয় প্রান্তে সাদা স্থানকে সরিয়ে দেয় এবং একাধিক সাদা স্থানকে একক স্পেসে ভাগ করে।

যেমন যেমন

" a  b  c ".squish

ফলাফল হবে:

"a b c"

Api.rubyonrails.org থেকে এই রেফারেন্সটি দেখুন ।


4
নোট করুন যে কেবলমাত্র লিঙ্ক-উত্তরগুলি নিরুৎসাহিত করা হয়েছে, এসও উত্তরগুলি সমাধানের সন্ধানের শেষ-পয়েন্ট হওয়া উচিত (বনাম। রেফারেন্সগুলির মধ্যে আরও একটি স্টপওভার, যা সময়ের সাথে সাথে বাসি হয়ে যায়)। রেফারেন্স হিসাবে লিঙ্কটি রেখে এখানে দয়া করে এখানে একা একা সংক্ষিপ্তসার বিবেচনা করুন।
ক্লিওপাত্রা

2
আমি মনে করি এই উত্তরটি যথেষ্ট ব্যাখ্যা করা হয়েছিল এবং উত্তরটি যেহেতু উত্তরটি স্পষ্টভাবে ব্যাখ্যা করা হয়েছিল তাই লিঙ্কটিই রেফারেন্স ছিল reference এই ফাংশনটি ভাল ছিল, ধন্যবাদ
ksugiarto

4
এটি অ্যাক্টিভসপোর্ট থেকে। এটি ব্যবহারের জন্য আপনার সমস্ত কান্ডের প্রয়োজন নেই, তবে আপনার কমপক্ষে অ্যাক্টিভসপোর্ট এবং একটি দরকারrequire 'active_support/core_ext/string/filters'
জাস্টিন ফোর্স

2
পরিষ্কার হয়ে উঠতে , এটি কোনও সাদা জায়গা ace যেমন"a \t \n \f \r \v b".squish == "a b"
Purplejacket

47

কিছুটা দেরি হয়ে গেছে, তবে এই পৃষ্ঠাটি গুগল করছে এমন যে কেউ এই সংস্করণে আগ্রহী হতে পারে -

আপনি যদি প্রি-ফর্ম্যাট করা পাঠ্যের একটি অংশ পরিষ্কার করতে চান যে কোনও ব্যবহারকারী কোনওভাবে আপনার অ্যাপ্লিকেশনটিতে কেটে ফেলেছে তবে স্পেসিং শব্দটি সংরক্ষণ করে রাখতে পারেন:

content = "      a big nasty          chunk of     something

that's been pasted                        from a webpage       or something        and looks 

like      this

"

content.gsub(/\s+/, " ").strip

#=> "a big nasty chunk of something that's been pasted from a webpage or something and looks like this"

33
একটিও রেলেরsquish পদ্ধতি ব্যবহার করতে পারে : apidock.com/rails/String/squish
ফিলিপ কোয়েবে

5
অথবা যদি আপনার কাছে রেল না থাকে এবং আপনার যদি নতুন লাইন না থাকে তবে এটি squeeze(" ")কাজ করতে পারে।
অ্যান্ড্রু গ্রিম

45

রুবির .stripপদ্ধতি পিএইচপি সমতুল্য সম্পাদন করে trim()

সমস্ত সাদা স্থান অপসারণ করতে:

"  leading    trailing   ".squeeze(' ').strip
=> "leading trailing"

@ তাস আমাকে সচেতন করেছেন যে আমার আসল উত্তরটি ধারাবাহিকতায় সদৃশ নকলগুলি মুছে ফেলে - YUCK! আমি তখন থেকে স্কুইশ পদ্ধতিতে স্যুইচ করেছি যা রেলের ফ্রেমওয়ার্ক ব্যবহার করে যদি এই জাতীয় ঘটনাগুলি সম্পর্কে স্মার্ট।

require 'active_support/all'
"  leading    trailing   ".squish
=> "leading trailing"

"  good    men   ".squish
=> "good men"

উদ্ধৃতি: http://apidock.com/rails/String/squish


1
এটি "যোগদান করা" সদৃশ অক্ষর মুছে ফেলবে। "good men".squeeze.stripফিরে আসবে"god men"
তাস

1
@ টাসকে এটি নির্দেশ করার জন্য ধন্যবাদ। আমি আমার উত্তরটি স্কোয়াশ পদ্ধতির পক্ষে সম্পাদনা করেছি।
স্কার্ভার 2

1
"পর পর নকল চিঠিগুলি" এর জন্য +1। আমি দৃশ্যের বর্ণনা দেওয়ার মতো উপায় নিয়ে আসতে পারিনি। সাবাশ! :-)
তাস

26
" Raheem Shaik ".strip

এটি বাম এবং ডান পাশের স্পেসগুলি সরিয়ে ফেলবে। এই কোডটি আমাদের দেবে:"Raheem Shaik"


20

এছাড়াও ভুলবেন না:

$ s = "   I have white space   ".split
=> ["I", "have", "white", "space"]

6
কাজেই s.split.join কাজটি করবে।
পাইওটার ব্রডনি

1
পুনরাবৃত্তি করার সময় এটি দুর্দান্ত:[" Hello World", "Big Giraffe "].map(&:split).map(&:join) #=> ["HelloWorld", "BigGiraffe"]
tbloncar

20

split.join স্ট্রিংয়ের যে কোনও জায়গায় সমস্ত স্পেস বিস্ফোরণ করবে।

"  a b  c    d     ".split.join
> "abcd"

এটি টাইপ করা এবং মনে রাখা সহজ, সুতরাং এটি কনসোলে এবং দ্রুত হ্যাকিংয়ের জন্য দুর্দান্ত। তাত্ক্ষণিকভাবে গুরুতর কোডে স্বাগত জানায় না যদিও এটি উদ্দেশ্যকে মাস্ক করে।

( উপরের জাস্টিকালের উত্তরে পিয়োটারের মন্তব্যের ভিত্তিতে ))


1
অনেক, এই মন্তব্যটির জন্য অনেক ধন্যবাদ :-) এটিই একমাত্র পদ্ধতি যা আপনার যদি দীর্ঘ স্ট্রিং থাকে যা অনুচ্ছেদের মতো লাগে works
Boomerange

12

আপনি এটি চেষ্টা করতে পারে

"Some Special Text Values".gsub(/[[:space:]]+/, "")

ব্যবহার করে : স্পেস: নিয়মিত জায়গার সাথে অবিচ্ছিন্ন স্থান সরিয়ে দেয়।


1
এটি আসলে সেরা উত্তর আইএমএইচও, যেমন বন্য এইচটিএমএল &nbspএবং অন্যান্য যে কোনও নন-এএসসিআইআই হোয়াইটস্পেসগুলি সরানো বা মেলানো যাবে নারেজএক্সপ্যাক ডক্সে " পসিক্স ব্র্যাকেট এক্সপ্রেশন" শিরোনামে বিভাগটি দেখুনString#strip/\s/
ম্যাটজফ্যান

8

জিএসব ব্যবহার করুন বা মুছুন। পার্থক্যটি হ'ল gsub ট্যাবগুলি সরিয়ে ফেলতে পারে, যখন মুছতে পারে না। কখনও কখনও আপনার ফাইলগুলিতে ট্যাব থাকে যা সম্পাদকরা যুক্ত করেন।

a = "\tI have some whitespaces.\t"
a.gsub!(/\s/, '')  #=>  "Ihavesomewhitespaces."
a.gsub!(/ /, '')   #=>  "\tIhavesomewhitespaces.\t"
a.delete!(" ")     #=>  "\tIhavesomewhitespaces.\t"
a.delete!("/\s/")  #=>  "\tIhavesomewhitespaces.\t"
a.delete!('/\s/')  #=>  using single quote is unexpected, and you'll get "\tI have ome whitepace.\t"

8

অনেকগুলি উপায় রয়েছে:
উভয় পক্ষ থেকে সাদা স্থান অপসারণ করতে:

পিএইচপি এর ট্রিম মত ধরনের ()

Foo_bar.strip

সমস্ত স্থান সরাতে:

Foo_bar.gsub(/ /, "")

সমস্ত সাদা স্থান অপসারণ করতে:

Foo_bar.gsub(/\s/, "")


6

জিএসব পদ্ধতিটি ঠিকঠাক করবে।
জিএসব পদ্ধতিটি স্ট্রিংয়ে ডেকে বলা যেতে পারে:

a = "this is a string"
a = a.gsub(" ","")
puts a
#Output: thisisastring

Gsub পদ্ধতি প্রথম আর্গুমেন্টের প্রতিটি ঘটনা অনুসন্ধান করে এবং দ্বিতীয় আর্গুমেন্টের সাথে এটি প্রতিস্থাপন করে। এই ক্ষেত্রে, এটি স্ট্রিংয়ের মধ্যে প্রতিটি স্থান প্রতিস্থাপন করবে এবং এটি সরিয়ে ফেলবে।

আরেকটি উদাহরণ:

b = "the white fox has a torn tail"

"T" অক্ষরের প্রতিটি উপস্থিতিকে মূল "T" দিয়ে প্রতিস্থাপন করা যাক

b = b.gsub("t","T")
puts b 
#Output: The whiTe fox has a Torn Tail

5

পিএইচপি সাথে হুবহু মিলে আচরণের জন্য trim, সহজ পদ্ধতিটি হ'ল পদ্ধতিটি ব্যবহার করা যেমন String#strip:

string = "  Many have tried; many have failed!    "
puts "Original [#{string}]:#{string.length}"
new_string = string.strip
puts "Updated  [#{new_string}]:#{new_string.length}"

রুবি'র একটি সম্পাদনা-ইন-প্লেস সংস্করণও রয়েছে, যাকে বলা হয় String.strip!(অনুগ্রহ করে নোট করুন '!')। এটির জন্য স্ট্রিংয়ের একটি অনুলিপি তৈরি করার দরকার নেই এবং কিছু ব্যবহারের জন্য তা দ্রুততর হতে পারে:

string = "  Many have tried; many have failed!    "
puts "Original [#{string}]:#{string.length}"
string.strip!
puts "Updated  [#{string}]:#{string.length}"

উভয় সংস্করণ এই আউটপুট উত্পাদন করে:

Original [  Many have tried; many have failed!    ]:40
Updated  [Many have tried; many have failed!]:34

আমি কিছু মৌলিক ব্যবহার stripএবং strip!সেইসাথে কিছু বিকল্পের কর্মক্ষমতা পরীক্ষা করার জন্য একটি মানদণ্ড তৈরি করেছি । পরীক্ষাটি হ'ল:

require 'benchmark'

string = 'asdfghjkl'
Times = 25_000

a = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }
b = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }
c = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }
d = Times.times.map {|n| spaces = ' ' * (1+n/4); "#{spaces}#{spaces}#{string}#{spaces}" }

puts RUBY_DESCRIPTION
puts "============================================================"
puts "Running tests for trimming strings"

Benchmark.bm(20) do |x|
  x.report("s.strip:")                 { a.each {|s| s = s.strip } }
  x.report("s.rstrip.lstrip:")         { a.each {|s| s = s.rstrip.lstrip } }
  x.report("s.gsub:")                  { a.each {|s| s = s.gsub(/^\s+|\s+$/, "") } }
  x.report("s.sub.sub:")               { a.each {|s| s = s.sub(/^\s+/, "").sub(/\s+$/, "") } }

  x.report("s.strip!")                 { a.each {|s| s.strip! } }
  x.report("s.rstrip!.lstrip!:")       { b.each {|s| s.rstrip! ; s.lstrip! } }
  x.report("s.gsub!:")                 { c.each {|s| s.gsub!(/^\s+|\s+$/, "") } }
  x.report("s.sub!.sub!:")             { d.each {|s| s.sub!(/^\s+/, "") ; s.sub!(/\s+$/, "") } }
end

এগুলি ফলাফল:

ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-darwin14]
============================================================
Running tests for trimming strings
                           user     system      total        real
s.strip:               2.690000   0.320000   3.010000 (  4.048079)
s.rstrip.lstrip:       2.790000   0.060000   2.850000 (  3.110281)
s.gsub:               13.060000   5.800000  18.860000 ( 19.264533)
s.sub.sub:             9.880000   4.910000  14.790000 ( 14.945006)
s.strip!               2.750000   0.080000   2.830000 (  2.960402)
s.rstrip!.lstrip!:     2.670000   0.320000   2.990000 (  3.221094)
s.gsub!:              13.410000   6.490000  19.900000 ( 20.392547)
s.sub!.sub!:          10.260000   5.680000  15.940000 ( 16.411131)

3

আমি ভিডিতে আইডি হিসাবে একটি রেকর্ড "শিরোনাম" ব্যবহার করতে চাইলে আমি এটি করার চেষ্টা করছিলাম তবে শিরোনামগুলির শূন্যস্থান ছিল।

একটি সমাধান হল:

record.value.delete(' ') # Foo Bar -> FooBar

2

আমার ব্যক্তিগত পছন্দটি পদ্ধতিটি ব্যবহার করছে .tr

যেমন হিসাবে:

string = "this is a string to smash together"

string.tr(' ', '') # => "thisisastringtosmashtogether"

@ ফ্র্যাঙ্কসিমিটকে এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ যে এটি সমস্ত সাদা স্থান (কেবলমাত্র ফাঁকা স্থানগুলি) মুছতে না পারার জন্য আপনাকে এটি লিখতে হবে:

string = "this is a string with tabs\t and a \nnewline"

string.tr(" \n\t", '') # => "thisisastringwithtabsandanewline"

তবে এটি কেবল সরিয়ে দেয় spaces, তা নয়all white spaces
গ্যাভরিয়েল

সমস্ত সাদা স্থান (স্থান, ট্যাব, নতুন লাইন) অপসারণ করতে, s.tr(" \t\n", '')পরিবর্তে ব্যবহার বিবেচনা করুন।
ফ্র্যাঙ্ক স্মিট

@ গ্যাভরিল - আমি প্রশ্নটি ভুল / ভুল বুঝেছি, এটি উল্লেখ করার জন্য আপনাকে ধন্যবাদ।
জেরেমি গুন্টার

@ ফ্র্যাঙ্কশমিট ওপি-র প্রশ্নের আরও সঠিকভাবে উত্তর দেওয়ার জন্য আমি আমার সংখ্যায় আপনার সংশোধন যুক্ত করেছি। আমাকে সংশোধন করার জন্য আপনাকে ধন্যবাদ।
জেরেমি গুন্টার

1

রুবি এর .scan()এবং .join()স্ট্রিং পদ্ধতি এছাড়াও স্ট্রিং হোয়াইটস্পেস পরাস্ত সাহায্য করতে পারেন।

scan(/\w+/).join সমস্ত স্পেসগুলি সরিয়ে স্ট্রিংয়ে যোগ দেবে

string = "White spaces in me".scan(/\w+/).join
=>"Whitespacesinme"

এটি স্ট্রিংয়ের বাম এবং ডান দিক থেকে স্থান সরিয়ে দিচ্ছে। মানে ltrim, rtrimএবং trim। যদি কেউ ধরে পটভূমি হয়েছে থাকে C, FoxProবা Visual Basicএবং তিড়িং লাফ Ruby

2.1.6 :002 > string = " White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :003 > string = " White spaces in me".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :004 > string = "White spaces in me ".scan(/\w+/).join => "Whitespacesinme" 2.1.6 :005 >


1
@ অমিতপান্ড্যা .scan () পদ্ধতির অতিরিক্ত মূল পয়েন্টগুলি নির্দেশ করার জন্য আপনাকে অনেক ধন্যবাদ। প্রশংসা !!!
ধর্মেশ রূপাণী


1

আমি গেমটি থেকে কিছুটা দেরি করেছি, তবে আমি ব্যবহার করে পিছনের এবং শীর্ষস্থানীয় হোয়াইটস্পেসগুলি সরিয়েছি strip!। আপনার মতো একটি অ্যারে থাকলে, যেমন আমি করেছি, আমার অ্যারের মাধ্যমে পুনরাবৃত্তি করতে হবে এবং উদাহরণটি শেষ হওয়ার পরে এটি সংরক্ষণ করতে হবে। দ্য ! এই যত্ন নেওয়া। এটি কেবল প্রথম শীর্ষস্থানীয় বা শেষের পিছনে নয়, শেষ বা শুরুতে সমস্ত সাদা স্থান সরিয়ে ফেলে removed

উদাহরণ স্বরূপ:

array = ["hello ","   Melanie", "is", " new ", "to  ", " programming"]
array.each do |i|
  i.strip!
end

এটিতে এর ফলাফল হবে: ["হ্যালো", "মেলানিয়া", "হয়", "নতুন", "থেকে", "প্রোগ্রামিং"]। আমার অনুরূপ প্রশ্নের জন্য এই কোডটি হাইলাইট করার জন্য তৈরি করা একটি ভিডিওতে আমি এটি আরও অনুসন্ধান / শেয়ার করেছি

আমি প্রোগ্রামিংয়ে নতুন এবং স্ট্রিপটি ব্যবহার করে কাজ হয়নি কারণ লুপটি শেষ হওয়ার পরে এটি অ্যারেটিতে সংরক্ষণ করে নি।


0

আপনি এটি চেষ্টা করতে পারেন:

"ab c d efg hi ".split.map(&:strip)

এটি পেতে:

["ab, "c", "d", "efg", "hi"]

অথবা আপনি যদি একটি একক স্ট্রিং চান, কেবল ব্যবহার করুন:

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