স্ট্রিংয়ের অভ্যন্তরে একাধিক স্পেস এবং নতুন লাইন সরান


104

ধরুন আমাদের এর মতো স্ট্রিং রয়েছে:

Hello, my\n       name is Michael.

আমি কীভাবে সেই নতুন লাইনটি সরিয়ে ফেলব এবং স্ট্রিংয়ের অভ্যন্তরে কোনও একটির পরে এই ফাঁকগুলি সরাতে পারি?

Hello, my name is Michael.

উত্তর:


188

রেল squishপদ্ধতি পরীক্ষা করে দেখুন :

http://apidock.com/rails/String/squish


6
সবচেয়ে সহজ এবং সবচেয়ে মার্জিত সমাধান। ধন্যবাদ। তবে একটি জিনিস আছে, এই পদ্ধতিটি রেলগুলিতে সংজ্ঞায়িত করা হয়েছে, সুতরাং এটি কেবল রেল অ্যাপ্লিকেশনগুলিতে কাজ করবে, ভাগ্যক্রমে এটি আমার ক্ষেত্রে।
ক্রিকি

4
যেমন ক্রিকি অস্পষ্টভাবে একটি বাচ্চা বলেছিলেন, এটি একটি রেল পদ্ধতি, কোনও রুবি পদ্ধতি নয়।

17
একটি ব্যয়বহুল প্রসঙ্গে, some_string.strip.gsub(/\s+/, " ")স্কোয়াশ যা করে ঠিক তা ব্যবহার করুন ।
র‌্যাপকাল

1
ধন্যবাদ! সম্পর্কে জানতেন নাsquish
ফ্রাঙ্কোইস

38

উদাহরণ হিসেবে বলা যায় Rubys সালে নির্মিত লুৎফর :

string.gsub("\n", ' ').squeeze(' ')

3
কেবল সচেতন হন: স্কুইজ সমস্ত স্ট্রিংগুলি সংকুচিত করবে যা একাধিক অক্ষরের রানে আসে। সুতরাং "আমার অ্যাপ্লিকেশনটির অনুলিপিটি বার করুন" .স্কুয়েজ => "আমার আবেদনটির অনুলিপিটি বার করুন"
চার্লিপর্ক

8
তবে squeeze(' ')কেবল জায়গা ফাঁক করে দেয়। "Squeeze my application's copy".squeeze(' ') => "Squeeze my application's copy"
স্টেনস্লাগ

22

সহজ উপায় সম্ভবত হবে

s = "Hello, my\n       name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."

8

এটা চেষ্টা কর:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")

এটি আসলে সেরা "প্লেইন রুবি" উত্তর, এবং একাধিক স্ট্রিং থেকে শীর্ষস্থান সরিয়ে ফেলার জন্য সঠিকভাবে কাজ করে।
কোয়েন

5
my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )

তিনি আদর্শটিও মুছে ফেলতে চান \n(আমার মনে হয়) এটির মতো স্থানের জায়গায় এটি স্থান পরিবর্তন করা উচিত"Hello,\nMy name is Michael"
আলী

4

এই রেজেক্স 1 টি সাদা জায়গা দিয়ে 1 বা আরও বেশি সাদা স্পেসের উদাহরণ \sপ্রতিস্থাপন করবে , পিএস সমস্ত সাদা স্পেস অক্ষর প্রতিস্থাপন করবে যার মধ্যে রয়েছে \s\t\r\n\f:

a_string.gsub!(/\s+/, ' ')

একইভাবে কেবল গাড়ীর ফেরতের জন্য

str.gsub!(/\n/, " ")

প্রথমে \nসাদা স্থানের সাথে সমস্ত প্রতিস্থাপন করুন , তারপরে মুছে ফেলা একাধিক সাদা স্পেস রেজেক্স ব্যবহার করুন।


ধন্যবাদ! এটি বহুগুণ স্থানগুলি সরিয়ে দেওয়ার জন্য তবে শব্দের মধ্যে একক স্থান বজায় রাখার জন্য আমার উদ্দেশ্যে কাজ করেছে।
অ্যাকোস্টিক_নর্থ



1

আপনি squishএই রুবির চেহারাটি অন্তর্ভুক্ত করে আপনি রুবিতে কেবল পদ্ধতি (এবং অন্য কিছু নয়) যুক্ত করতে পারেন:

https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/squish.rb

require 'facets/string/squish'

তারপরে ব্যবহার করুন

"my    \n   string".squish #=> "my string"

রেলগুলির প্রয়োজন নেই।

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