উত্তর:
এটার মত:
yourString = yourString.replaceAll("\\s+", " ");
উদাহরণ স্বরূপ
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
আউটপুট
lorem ipsum dolor sit.
তার \s+
মানে কী?
\s+
একটি নিয়মিত প্রকাশ। \s
একটি স্পেস, ট্যাব, নতুন লাইন, ক্যারেজ রিটার্ন, ফর্ম ফিড বা উল্লম্ব ট্যাবের সাথে মেলে এবং +
"এর মধ্যে এক বা একাধিক" বলেছেন। সুতরাং উপরের কোডটি একটি একক স্পেস অক্ষরের সাথে এক অক্ষরের চেয়ে দীর্ঘ সমস্ত "হোয়াইটস্পেস সাবস্ট্রিংগুলি" ভেঙে দেবে।
\s+
তবে 2 ব্যাকস্ল্যাশ মানে কি?
"\\"
একটি একক ব্যাকস্ল্যাশ সমন্বিত স্ট্রিং প্রতিনিধিত্ব করে। তাই \s+
আপনি লিখতে প্রতিনিধিত্ব করতে "\\s+"
।
আপনি রেজেক্স ব্যবহার করতে পারেন
(\s)\1
এবং
এটি দিয়ে প্রতিস্থাপন $1
।
জাভা কোড:
str = str.replaceAll("(\\s)\\1","$1");
যদি ইনপুট থাকে তবে "foo\t\tbar "
আপনি "foo\tbar "
আউটপুট হিসাবে পাবেন
তবে যদি ইনপুট হয় তবে "foo\t bar"
এটি অপরিবর্তিত থাকবে কারণ এর কোনও পরপর সাদা অংশ নেই।
আপনি যদি সমস্ত সাদা স্থানের অক্ষর (স্পেস, উল্লম্ব ট্যাব, অনুভূমিক ট্যাব, ক্যারিয়ার রিটার্ন, ফর্ম ফিড, নতুন লাইন) স্থান হিসাবে বিবেচনা করে থাকেন তবে আপনি কোনও একক স্পেসের সাথে ক্রমাগত শ্বেত স্থানের সংখ্যার প্রতিস্থাপন করতে নীচের রেজেক্সটি ব্যবহার করতে পারেন :
str = str.replaceAll("\\s+"," ");
তবে আপনি যদি একক স্থানের সাথে টানা দুটি সাদা স্থান প্রতিস্থাপন করতে চান তবে আপনার করা উচিত:
str = str.replaceAll("\\s{2}"," ");
এটি ব্যবহার করে দেখুন - আপনাকে করতে হবে import java.util.regex.*;
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(string);
boolean check = matcher.find();
String str = matcher.replaceAll(" ");
string
আপনার স্ট্রিংটি যেখানে আপনার নকল সাদা স্থান সরিয়ে ফেলতে হবে
হাই, আমি সবচেয়ে দ্রুত (তবে সবচেয়ে সুন্দর উপায় নয়) পেয়েছি
while (cleantext.indexOf(" ") != -1)
cleantext = StringUtils.replace(cleantext, " ", " ");
এটি একটি রেজেক্সের বিপরীতে অ্যান্ড্রয়েডে বেশ দ্রুত চলছে
String str = " Text with multiple spaces ";
str = org.apache.commons.lang3.StringUtils.normalizeSpace(str);
// str = "Text with multiple spaces"
যদিও এটি অনেক দেরি হয়ে গেছে, আমি একটি আরও ভাল সমাধান পেয়েছি (যা আমার পক্ষে কাজ করে) যা এক ধরণের একই ধরণের সাদা স্পেসকে এর ধরণের একটি সাদা স্পেসের সাথে প্রতিস্থাপন করবে। এটাই:
Hello!\n\n\nMy World
হবে
Hello!\nMy World
লক্ষ্য করুন যে এখনও শূন্যস্থানগুলি শীর্ষস্থানীয় এবং পিছনে রয়েছে। সুতরাং আমার সম্পূর্ণ সমাধানটি হ'ল:
str = str.trim().replaceAll("(\\s)+", "$1"));
এখানে, trim()
"" দিয়ে সমস্ত নেতৃস্থানীয় এবং অনুসরণযোগ্য শ্বেত স্পেস স্ট্রিং প্রতিস্থাপন করে। # 1 গোষ্ঠীতে(\\s)
ক্যাপচার করার জন্য \\s
(এটি সাদা স্পেস যেমন '', '\ n', '\ t') । 1 বা ততোধিক পূর্বের টোকেনটি মিলানোর জন্য সাইন। সুতরাং কোনও একক সাদা স্পেস অক্ষরের ('', '\ n' বা '\ t') এর মধ্যে একের পরের অক্ষর (1 বা ততোধিক) হতে পারে। ম্যাচিং টাইপের (যা মিলছে এমন একক সাদা স্থানের অক্ষর) গোষ্ঠী # 1 স্ট্রিংয়ের (যা কেবলমাত্র 1 সাদা স্পেস অক্ষর ধারণ করে) সাথে ম্যাচিং স্ট্রিংগুলি প্রতিস্থাপনের জন্য । উপরের সমাধানটি এর মতো পরিবর্তিত হবে:+
(\\s)+
$1
Hello!\n\n\nMy World
হবে
Hello!\nMy World
আমি আমার উপরের সমাধানটি এখানে পাইনি তাই আমি এটি পোস্ট করেছি।
আপনি যদি সমস্ত শীর্ষস্থানীয় এবং অনুসরণীয় বহির্মুখী সাদা স্থান থেকে মুক্তি পেতে চান তবে আপনি এর মতো কিছু করতে চান:
// \\A = Start of input boundary
// \\z = End of input boundary
string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");
তারপরে আপনি এখানে তালিকাভুক্ত অন্যান্য কৌশল ব্যবহার করে সদৃশগুলি সরিয়ে ফেলতে পারেন:
string = string.replaceAll("\\s+"," ");
এটি তিনটি ধাপে সম্ভব হতে পারে: