জাভাস্ক্রিপ্ট ব্যবহার করে কোনও স্ট্রিং থেকে স্পেসগুলি কীভাবে সরাবেন?


552

একটি স্ট্রিংয়ের ফাঁকা স্থানগুলি কীভাবে সরাবেন? এই ক্ষেত্রে:

ইনপুট:

'/var/www/site/Brand new document.docx'

আউটপুট:

'/var/www/site/Brandnewdocument.docx'

আমার সমাধান" ahm ed ".split('').filter(e => e.trim().length).join('')
ইউএ_

উত্তর:


1223

এই?

str = str.replace(/\s/g, '');

উদাহরণ

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );


আপডেট: এই প্রশ্নের ভিত্তিতে , এটি:

str = str.replace(/\s+/g, '');

একটি ভাল সমাধান। এটি একই ফলাফল উত্পাদন করে, তবে এটি দ্রুত করে।

রেজেক্স

\s"হোয়াইটস্পেস" এর রেজিেক্স, এবং gএটি "গ্লোবাল" পতাকা, যার অর্থ মিলছে সমস্ত \s(হোয়াইটস্পেস)।

একটি দুর্দান্ত ব্যাখ্যা এখানে+ পাওয়া যাবে

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


@ গৌরব আমি এসও তে একই উত্তর খুঁজে পেয়েছি এবং আমি .replace(/\s+/g, '')প্রায়শই দেখতে পাই । আমার এবং উত্তর এর মধ্যে কোন পার্থক্য আছে?
Vidime বিদাস

এই ক্ষেত্রে কোন পার্থক্য আছে। তবে + কমপক্ষে একটি ঘটনার সন্ধানের জন্য ব্যবহৃত হয়।
গৌরব

1
বোকা আমাকে, আমি .replace(' ','')কাজ করবে যে ছাপ অধীন ছিল । অনেক প্রশংসিত!
অ্যান্ডি মারসার 21

3
আসল উত্তরের সাথে জড়িত (যা তার সম্পাদনার সাথে সিম লিঙ্ক +করেছে ) যদি কেউ তাকে / তারও জমা দিতে চায় তবে কেবলমাত্র 60 টি ভোট রয়েছে stackoverflow.com/a/5964427/4258817
ইঁদুরে পূর্ণ

2
দুর্ঘটনাক্রমে আপনার রেজেক্সের উদ্ধৃতি না দেওয়ার বিষয়ে সতর্ক থাকুন যেমন .replace('/\s+/g', '')এটি আক্ষরিক স্ট্রিংটি সন্ধান করার চেষ্টা করবে। এটি আমাকে আগে ছড়িয়ে দিয়েছে ...
আরটিএফ

75

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

এটি করার দুটি উপায়!


4
আমি বিভক্ত () এবং যোগদান () যোগদান।
এরিক মিলিয়ট-মার্টিনেজ

2
বিভক্ত ('') এবং যোগদানের ফলে space n, white t সাদা স্থানের অক্ষর মুছে ফেলা হবে না, অন্য কাজটি হ'ল a.split ('') map ম্যাপ (c => c.trim ()) join join ('')
রব

36

সবচেয়ে ছোট এবং দ্রুততম :str.replace(/ /g, '');


মাপকাঠি:

এখানে আমার ফলাফল - (2018.07.13) ক্রোম 67.0.3396 (64-বিট), সাফারি 11.0.3 (13604.5.6), ফায়ারফক্স 59.0.2 (64-বিট)) এ ম্যাকওস হাই সিয়েরা 10.13.3:

ছোট স্ট্রিং

ওপি প্রশ্ন থেকে উদাহরণের মতো সংক্ষিপ্ত স্ট্রিং

এখানে চিত্র বর্ণনা লিখুন

সমস্ত ব্রাউজারের দ্রুততম সমাধানটি হ'ল / /g(regexp1a) - ক্রোম 17.7 এম (অপারেশন / সেকেন্ড), সাফারি 10.1 এম, ফায়ারফক্স 8.8 এম। সমস্ত ব্রাউজারের জন্য ধীরতম split-joinসমাধান ছিল । পরিবর্তন করার জন্য \sঅথবা অ্যাড +বাi RegExp প্রসেসিং গতি নিচে।

দীর্ঘ স্ট্রিং

স্ট্রিংয়ের জন্য প্রায় ~ 3 মিলিয়ন চরিত্রের ফলাফলগুলি:

  • regexp1a : সাফারি 50.14 অপস / সেকেন্ড, ফায়ারফক্স 18.57, ক্রোম 8.95
  • regexp2b : সাফারি 38.39, ফায়ারফক্স 19.45, ক্রোম 9.26
  • বিভক্ত-যোগদান : ফায়ারফক্স 26.41, সাফারি 23.10, ক্রোম 7.98,

আপনি এটিকে আপনার মেশিনে চালাতে পারেন: https://jsperf.com/remove-string-spaces/1


1
মজার বিষয় হল স্প্লিট-জয়ড পদ্ধতিটি এখন ফায়ারফক্স on৩ এ আমার পক্ষে দ্রুততম, তারপরে রেগএক্সপ্যাকএএ ৫৩% ধীর গতিতে রয়েছে।
হ্যাকেল

25

@ স্প্র্যাপের উত্তর অনুসরণ করা: আসলে স্প্লিট / জয়েন্ট ওয়ে ব্যবহার করা রেজিএক্সএক্সপ ব্যবহারের চেয়ে দ্রুত। পারফরম্যান্স পরীক্ষার কেসটি দেখুন

সুতরাং

var result = text.split(' ').join('')

চেয়ে দ্রুত পরিচালনা করে

var result = text.replace(/\s+/g, '')

ছোট গ্রন্থগুলিতে এটি প্রাসঙ্গিক নয়, তবে ক্ষেত্রে গুরুত্বপূর্ণ যখন সময় গুরুত্বপূর্ণ, যেমন পাঠ্য বিশ্লেষকরা, বিশেষত যখন ব্যবহারকারীদের সাথে আলাপচারিতা করেন তা গুরুত্বপূর্ণ।


অন্যদিকে, \s+বিভিন্ন স্থানের অক্ষর পরিচালনা করে। এর সাথে \nএবং এর মধ্যে \tএটি \u00a0চরিত্রের সাথেও মেলে এবং  পাঠ্যটি ব্যবহার করার সময় এটিই পরিণত হয়textDomNode.nodeValue

সুতরাং আমি মনে করি যে এখানে উপসংহারটি নিম্নলিখিত হিসাবে তৈরি করা যেতে পারে: আপনার যদি কেবলমাত্র স্থানগুলি প্রতিস্থাপন ' 'করতে হয় তবে বিভক্ত / জোড় ব্যবহার করুন। প্রতীক শ্রেণীর বিভিন্ন চিহ্ন থাকতে পারে - ব্যবহার করুনreplace(/\s+/g, '')


1
এটা খুব বেশি না way faster । পরীক্ষাটি
চালিয়েছে


2
  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, ""); 
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

দ্রষ্টব্য: আপনি ফাঁকা স্থান অপসারণের জন্য 'জি' বা 'জিআই' ব্যবহার করলেও উভয়ই একই রকম আচরণ করে।

আমরা যদি প্রতিস্থাপন ফাংশনে 'জি' ব্যবহার করি তবে এটি সঠিক মিলের জন্য পরীক্ষা করবে। তবে আমরা যদি 'জিআই' ব্যবহার করি তবে এটি কেস সংবেদনশীলতা উপেক্ষা করে।

রেফারেন্সের জন্য এখানে ক্লিক করুন


0

Regex + প্রতিস্থাপন ()

যদিও রেজেক্স ধীর হতে পারে, অনেকগুলি ব্যবহারের ক্ষেত্রে বিকাশকারী একবারে কয়েকটি স্ট্রিংগুলি চালিত করে তাই গতি বিবেচনা করে অপ্রাসঙ্গিক considering যদিও / / / / \ s / এর চেয়ে দ্রুত, '\ গুলি' থাকার ফলে অন্য বিকাশকারীকে সম্ভবত আরও স্পষ্টভাবে কী চলছে তা ব্যাখ্যা করে।

let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'

বিভক্ত () + যোগদান ()

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

let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.