জাভা কীভাবে স্ট্রিংয়ে একক স্পেসের সাথে 2 বা ততোধিক স্পেস প্রতিস্থাপন করতে পারে এবং শীর্ষস্থানীয় এবং চলমান স্থানগুলি মুছবে


271

এই স্ট্রিংটি পরিবর্তন করার জন্য জাভাতে দ্রুত, সহজ উপায় খুঁজছেন

" hello     there   "

এমন দেখতে কিছু দেখতে

"hello there"

যেখানে আমি এই সমস্ত একাধিক স্পেসকে একটি একক স্পেসের সাথে প্রতিস্থাপন করি, তা ছাড়া আমি চাই স্ট্রিংয়ের শুরুতে এক বা একাধিক স্পেস চলে যেতে।

এরকম কিছু আমাকে আংশিকভাবে সেখানে পেয়েছে

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( )+", " ");

তবে বেশ নয়


5
আপনার কোনও উত্তর গ্রহণ করার বিষয়টি বিবেচনা করা উচিত। পরবর্তী পৃষ্ঠায় উপস্থিত লোকদের পক্ষে একটি সুনির্দিষ্ট সমাধান চয়ন করা এটি আরও সহজ করে তোলে।
পল রুনি

1
এটি অন্যতম প্রস্তাবিত উপায়। =>। স্ট্রিংয়ের নাম উইথপপ্রেরস্পেসিং = স্ট্রিংইটিলস.নরমালাইজস্পেস (স্ট্রিংউইথলোটঅফস্পেসস);
কুণাল ভোহরা

s = s.replaceAll ("\\ s +", "");
সরোজ কুমার সাহু

উত্তর:


460

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

String after = before.trim().replaceAll(" +", " ");

আরো দেখুন

  • String.trim()
    • শীর্ষস্থানীয় এবং অনুসরণযোগ্য সাদা স্থান বাদ দিয়ে স্ট্রিংয়ের একটি অনুলিপি ফেরত দেয়।
  • regular-expressions.info/Repetition

কোন trim()রেজেক্স

এটি কেবল একটির সাথে করা সম্ভব replaceAll, তবে এটি trim()সমাধানের চেয়ে খুব কম পঠনযোগ্য । তবুও, এখানে কেবল রেইগেক্স কী করতে পারে তা দেখানোর জন্য এখানে সরবরাহ করা হয়েছে:

    String[] tests = {
        "  x  ",          // [x]
        "  1   2   3  ",  // [1 2 3]
        "",               // []
        "   ",            // []
    };
    for (String test : tests) {
        System.out.format("[%s]%n",
            test.replaceAll("^ +| +$|( )+", "$1")
        );
    }

3 টি বিকল্প আছে:

  • ^_+ : স্ট্রিংয়ের শুরুতে স্পেসগুলির কোনও ক্রম
    • ম্যাচ এবং এর সাথে প্রতিস্থাপন করুন $1, যা খালি স্ট্রিং ক্যাপচার করে
  • _+$ : স্ট্রিংয়ের শেষে ফাঁকের কোনও ক্রম
    • ম্যাচ এবং এর সাথে প্রতিস্থাপন করুন $1, যা খালি স্ট্রিং ক্যাপচার করে
  • (_)+ : স্পেসগুলির কোনও ক্রম যা উপরের কোনওটির সাথে মেলে না, অর্থ এটি মাঝখানে
    • মিল এবং এর সাথে প্রতিস্থাপন করুন $1, যা একটি একক স্থান দখল করে

আরো দেখুন


11
+1, বিশেষত এটি লক্ষ্য করার মতো যেহেতু trim()এবং replaceAll()অন্যদিকে এটি করার চেয়ে কম মেমরি ব্যবহার করে। খুব বেশি নয়, তবে এটি যদি বহুবার বলা হয় তবে এটি যুক্ত হতে পারে, বিশেষত যদি "ট্রিম্মেবল হোয়াইটস্পেস" অনেক বেশি থাকে। ( Trim()সত্যিই অতিরিক্ত স্থান পরিত্রাণ পেতে না - এটা শুধু এটা শুরু এবং শেষের মান সরিয়ে লুকায় অন্তর্নিহিত। char[]দেহাবশেষ অপরিবর্তিত।)
corsiKa

2
এটি কেবল একটি বিশদ, তবে আমি মনে করি ( ) +বা ( ){2,}এটি হতে হবে (খুব বেশি দক্ষ;)
sp00m

6
ভাল regexp। দ্রষ্টব্য: স্থানটি `` এর সাথে \\sপ্রতিস্থাপন করা পছন্দসই অক্ষরের সাথে কোনও গ্রুপের সাদা অংশকে প্রতিস্থাপন করবে।
ডিজেএমজে

1
মনে রাখবেন যে () + অংশটি একটি একক জায়গার সাথে মিলবে এবং একক স্থানের সাথে এটি প্রতিস্থাপন করবে। সম্ভবত (<space> <space> +) আরও ভাল হতে পারে তবে এটি একমাত্র মেলে যদি একাধিক স্পেস থাকে এবং প্রতিস্থাপনটি স্ট্রিংয়ে নেট পরিবর্তন করে।
লি মায়াদর

2
লি মায়াদোর যেমন উল্লেখ করেছেন, .trim().replaceAll(" +", " ")(দুটি স্পেস সহ) .trim().replaceAll(" +", " ")(একটি স্পেস সহ ) তার চেয়ে দ্রুততর । আমি স্ট্রিংগুলির টাইমিং টেস্টগুলি চালিয়েছি যার কেবলমাত্র একক স্পেস এবং সমস্ত দ্বিগুণ স্পেস ছিল এবং প্রচুর অপারেশন করার সময় এটি উভয়ের পক্ষে যথেষ্ট দ্রুততর হয়েছিল (কয়েক মিলিয়ন বা তার বেশি, পরিবেশের উপর নির্ভরশীল)।
গ্যারি এস ওয়েভার

154

আপনার কেবল একটি দরকার:

replaceAll("\\s{2,}", " ").trim();

যেখানে আপনি এক বা একাধিক স্পেসের সাথে মেলে এবং এগুলিকে একটি একক স্পেসের সাথে প্রতিস্থাপন করুন এবং তারপরে শুরু এবং শেষের দিকে হোয়াইটস্পেসগুলি ছাঁটাই করুন (আপনি প্রথমে ট্রিমিং দিয়ে উল্টাতে পারেন এবং তারপরে কারও ইশারা করার সাথে সাথে রেজেক্সকে আরও দ্রুত তৈরি করতে পারেন)।

এটি পরীক্ষা করার জন্য দ্রুত চেষ্টা করুন:

System.out.println(new String(" hello     there   ").trim().replaceAll("\\s{2,}", " "));

এবং এটি ফিরে আসবে:

"hello there"

3
আমি সম্ভবত প্রথমে ছাঁটাই করব কারণ আপনি তখন রেগেক্সকে কিছুটা কাজ সাশ্রয় করছেন।
মাইকেল

3
@ sarah.ferguson দয়া করে চূড়ান্ত বন্ধনী ")" মুছে ফেলুন যা প্রথম প্রতিস্থাপনের মধ্যে সেখানে থাকা উচিত নয়। ধন্যবাদ। - সিস্টেম আমাকে এটি করতে দেয় না! (6 টির চেয়ে কম অক্ষরের কোনও সম্পাদনার জন্য যোগ্য নয় ..)
মাদারেন

2
মনে রাখবেন যে একসাথে একাধিক স্পেস নেই এমন ক্ষেত্রে এটি একটি স্থানকে অন্য স্থানের সাথে প্রতিস্থাপন করবে। সেক্ষেত্রে প্রতিস্থাপনটি করার দরকার নেই যদিও আপনি এটি পেতে পারেন যেহেতু আপনি একটি ট্যাবকে একটিও স্থানের সাথে প্রতিস্থাপন করছেন। কেবলমাত্র একাধিক স্পেস চিনতে ভাল লাগবে।
লি মায়াদর

2
@ জিওয়ার প্রশ্নটি ট্যাবগুলির জন্য দুঃখিত কোথায় জিজ্ঞাসা করলেন? আমি নিশ্চিত যে উপরের বিষয়গুলি that প্রতীকগুলিও সেই বিষয়ে প্রতিস্থাপন করে না .. এবং না ✌ ...
sarah.ferguson

2
একটি দ্বিতীয় @ জিওয়ার অপেক্ষা করুন এটি একটি একক টেবিলকে স্থানের সাথে প্রতিস্থাপন করবে। আমি কেবল এটি ব্যবহার করে
দেখেছি


20

এটি আমার জন্য পুরোপুরি কাজ করেন : sValue = sValue.trim().replaceAll("\\s+", " ");


1
লোকেরা আমার উত্তর সম্পাদনা করেছে। আসলটি ছিল: sValue = sValue.replaceAll ("\ s +", "") .ট্রিম ();
ডক্টর

2
সম্পাদনা করা হয়েছিল কারণ আপনার আসল উত্তরটি সমস্ত স্থান সরিয়ে দেয় এবং ওপি যা বলেছিল তা নয়
জোসে রুই সান্টোস

17
"[ ]{2,}"

এটি একাধিক জায়গার সাথে মিলবে।

String mytext = " hello     there   ";
//without trim -> " hello there"
//with trim -> "hello there"
mytext = mytext.trim().replaceAll("[ ]{2,}", " ");
System.out.println(mytext);

আউটপুট:

hello there

13

স্ট্রিংয়ের শুরুতে এবং শেষে স্পেসগুলি নির্মূল করতে, String#trim()পদ্ধতিটি ব্যবহার করুন । এবং তারপরে আপনার ব্যবহার করুন mytext.replaceAll("( )+", " ")


12

আপনি প্রথমে ব্যবহার করতে পারেন String.trim(), এবং তারপরে ফলাফলের উপর রেজেক্স রিপ্লেস কমান্ড প্রয়োগ করতে পারেন।


10
ট্রিম () স্ট্রিংয়ের শুরুতে এবং শেষে সমস্ত স্থান সরিয়ে ফেলবে, এটি শব্দের মধ্যে স্থানের জন্য প্রযোজ্য নয়
vuhung3990

10

নিম্নলিখিত কোডটি শব্দের মধ্যে যে কোনও শ্বেতস্পেসকে সংহত করবে এবং স্ট্রিংয়ের শুরু এবং শেষে যে কোনও সরিয়ে ফেলবে

String input = "\n\n\n  a     string with     many    spaces,    \n"+
               " a \t tab and a newline\n\n";
String output = input.trim().replaceAll("\\s+", " ");
System.out.println(output);

এই আউটপুট হবে a string with many spaces, a tab and a newline

নোট করুন যে স্পেস, ট্যাব এবং নিউলাইনগুলি সহ যে কোনও প্রিন্টযোগ্য অক্ষরগুলি কমপ্যাক্ট বা সরানো হবে


আরও তথ্যের জন্য সংশ্লিষ্ট ডকুমেন্টেশন দেখুন:


9

আর একবার চেষ্টা কর.

কোডের উদাহরণ

String str = " hello     there   ";
System.out.println(str.replaceAll("( +)"," ").trim());

আউটপুট

hello there

প্রথমে এটি সমস্ত স্থান একক স্থানের সাথে প্রতিস্থাপন করবে। আমাদের ছাঁটাই করা উচিত নয়, Stringকারণ এটি শুরু করার পরে Stringএবং শেষের Stringশুরুটি সমস্ত স্থানকে একক স্থানের সাথে প্রতিস্থাপন করবে যদি Stringস্টার্টিংয়ের শেষে Stringএবং শেষের দিকে ফাঁকা থাকে Stringতাই আমাদের সেগুলি ছাঁটাই করা দরকার। আপনি আপনার পছন্দসই পেতে চেয়ে String


4

আপনি চেহারাগুলিও ব্যবহার করতে পারেন।

test.replaceAll("^ +| +$|(?<= ) ", "");

অথবা

test.replaceAll("^ +| +$| (?= )", "")

<space>(?= )একটি স্পেস ক্যারেক্টারের সাথে মেলে যা অন্য স্পেস অক্ষর দ্বারা অনুসরণ করা হয়। সুতরাং পরপর স্পেসে, এটি শেষ ব্যতীত অন্য সমস্ত জায়গার সাথে মিলবে কারণ এটি কোনও স্থানের অক্ষর দ্বারা অনুসরণ করা হয় না। এটি অপসারণের ক্রিয়াকলাপের পরে ক্রমাগত স্পেসের জন্য আপনার একক স্থান ছেড়ে চলেছে।

উদাহরণ:

    String[] tests = {
            "  x  ",          // [x]
            "  1   2   3  ",  // [1 2 3]
            "",               // []
            "   ",            // []
        };
        for (String test : tests) {
            System.out.format("[%s]%n",
                test.replaceAll("^ +| +$| (?= )", "")
            );
        }

আপনার যেভাবে এটি রয়েছে, এটি সামনের বা শেষের কোনও স্থান (গুলি) বা এর পরে অন্য কোনও জায়গার সাথে কোনও একক স্থানের সাথে মিলবে। তার মানে "এ .... বি" 3 বার মিলবে এবং তিনবার প্রতিস্থাপন করবে। এটি প্রতিস্থাপনের সমস্ত () পদ্ধতির অভ্যন্তরের সমস্ত অভ্যন্তরীণ স্পেসে পুনরাবৃত্তি করে। সম্ভবত আপনি একবারে 2 বা ততোধিক স্পেসের কোনও ক্রম মেলাতে এবং অভ্যন্তরীণ পুনরাবৃত্তি হ্রাস করতে এটি পরিবর্তন করতে পারেন।
লি মায়াদোর

সম্ভবত <space> + (? = <স্পেস>) এটি করবে।
লি মায়াদর

4

ছাঁটা ()

কেবল অগ্রণী এবং চলমান স্থানগুলি সরিয়ে দেয়।

জাভা ডক থেকে, "কোনও স্ট্রিং ফিরিয়ে দেয় যার মান এই স্ট্রিং, কোনও নেতৃস্থানীয় এবং অনুসরণযোগ্য শ্বেত স্থান অপসারণ করে" "

System.out.println(" D ev  Dum my ".trim());

"ডি এভ ডম ​​আমার"

প্রতিস্থাপন (), সমস্ত প্রতিস্থাপন ()

শব্দটির সমস্ত খালি স্ট্রিং প্রতিস্থাপন করে,

System.out.println(" D ev  Dum my ".replace(" ",""));

System.out.println(" D ev  Dum my ".replaceAll(" ",""));

System.out.println(" D ev  Dum my ".replaceAll("\\s+",""));

আউটপুট:

"DevDummy"

"DevDummy"

"DevDummy"

দ্রষ্টব্য: "\ s +" হ'ল খালি স্থান অক্ষরের অনুরূপ নিয়মিত প্রকাশ।

তথ্যসূত্র: https://www.codedjava.com/2018/06/replace-all-spaces-in-string-trim.html


4

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

String nameWithProperSpacing = StringUtils.normalizeSpace( stringWithLotOfSpaces );

তুমি পেরেছ. এটি পঠনযোগ্য সমাধান।


3

কোটলিনে এটি দেখতে এমন হবে

val input = "\n\n\n  a     string with     many    spaces,    \n"
val cleanedInput = input.trim().replace(Regex("(\\s)+"), " ")

2
String str = " hello world"

প্রথমে জায়গা হ্রাস করুন

str = str.trim().replaceAll(" +", " ");

প্রথম অক্ষরটি বড় করুন এবং সমস্ত কিছু ছোট করুন

str = str.substring(0,1).toUpperCase() +str.substring(1,str.length()).toLowerCase();

2
mytext = mytext.replaceAll("\\s+"," ");

কোড-কেবল উত্তরগুলি নিরুৎসাহিত করা হয়। দয়া করে সম্পাদনাতে ক্লিক করুন এবং আপনার কোডটি প্রশ্নটিকে কীভাবে সম্বোধন করে তা সংক্ষেপ করে কিছু শব্দ যুক্ত করুন বা সম্ভবত আপনার উত্তর আগের উত্তরগুলির থেকে পৃথক কীভাবে তা ব্যাখ্যা করুন। ধন্যবাদ
নিক

1

এটি আমার পক্ষে কাজ করেছে

scan= filter(scan, " [\\s]+", " ");
scan= sac.trim();

যেখানে ফিল্টারটি ফাংশন অনুসরণ করে এবং স্ক্যান হ'ল ইনপুট স্ট্রিং:

public String filter(String scan, String regex, String replace) {
    StringBuffer sb = new StringBuffer();

    Pattern pt = Pattern.compile(regex);
    Matcher m = pt.matcher(scan);

    while (m.find()) {
        m.appendReplacement(sb, replace);
    }

    m.appendTail(sb);

    return sb.toString();
}

1
এটি <স্পেস> <ট্যাব> কে একটি স্থানের সাথে প্রতিস্থাপন করবে তবে <ট্যাব> <ট্যাব> নয়। এটি একটি ছোটখাটো সমস্যা, মনে হচ্ছে।
লি মায়াদর

1

আপনার এটি করা উচিত

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( +)", " ");

বৃত্তাকার বন্ধনী ভিতরে + রাখুন।



0

দেখা String.replaceAll

রিজেক্স ব্যবহার করুন "\s"এবং এর সাথে প্রতিস্থাপন করুন" "

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


1
নতুন স্ট্রিং ( "হ্যালো সেখানে") .replaceAll ( "\\ গুলি", "+ +") ফেরৎ একটি + হ্যালো +++++++ সেখানে +++ তাই স্পষ্টভাবে নেই কাজ ..
sarah.ferguson

1
চেষ্টা করুনnew String(" hello there ").trim().replaceAll("\\s+", " ")
মনীষ_ফেব্রুয়ারি

0

এটা যাচাই কর...

public static void main(String[] args) {
    String s = "A B  C   D    E F      G\tH I\rJ\nK\tL";
    System.out.println("Current      : "+s);
    System.out.println("Single Space : "+singleSpace(s));
    System.out.println("Space  count : "+spaceCount(s));
    System.out.format("Replace  all = %s", s.replaceAll("\\s+", ""));

    // Example where it uses the most.
    String s = "My name is yashwanth . M";
    String s2 = "My nameis yashwanth.M";

    System.out.println("Normal  : "+s.equals(s2));
    System.out.println("Replace : "+s.replaceAll("\\s+", "").equals(s2.replaceAll("\\s+", "")));

} 

স্ট্রিংয়ে যদি কেবল একটি একক স্থান থাকে তবে প্রতিস্থাপন () প্রতিস্থাপন করবে না,

স্পেসগুলি যদি একের বেশি হয় তবে তারপরে () ক্রিয়া সম্পাদন করে স্পেসস সরিয়ে দেয়।

public static String singleSpace(String str){
    return str.replaceAll("  +|   +|\t|\r|\n","");
}

একটি স্ট্রিংয়ের ফাঁকের সংখ্যা গণনা করার জন্য।

public static String spaceCount(String str){
    int i = 0;
    while(str.indexOf(" ") > -1){
      //str = str.replaceFirst(" ", ""+(i++));
        str = str.replaceFirst(Pattern.quote(" "), ""+(i++)); 
    }
    return str;
}

প্যাটার্ন। কোট ("?") আক্ষরিক প্যাটার্ন স্ট্রিং দেয়।


0

আমি আরও ভাল সমাধান হিসাবে regex ব্যবহার করে দ্বিতীয় উত্তর খুঁজে পাওয়ার আগে আমার পদ্ধতি। হয়তো কারও এই কোড প্রয়োজন।

private String replaceMultipleSpacesFromString(String s){
    if(s.length() == 0 ) return "";

    int timesSpace = 0;
    String res = "";

    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);

        if(c == ' '){
            timesSpace++;
            if(timesSpace < 2)
                res += c;
        }else{
            res += c;
            timesSpace = 0;
        }
    }

    return res.trim();
}

আকর্ষণীয়, কিন্তু সাদা স্থান মানে ফাঁকা ছাড়াও অনেক বেশি।
লাউর ইভান

@ লাউরিয়ান আপনার অর্থ কি?
ট্রিনিটি 420

\sনিয়মিত এক্সপ্রেশন (স্পেস, ট্যাব, নতুন লাইন, ফর্ম ফিড) -এর জন্য কী বোঝায় সে সম্পর্কে এই এন্ট্রিটির একটি ভাল ব্যাখ্যা রয়েছে ।
লাউর ইভান

@ লৌরিভান আপনার লিঙ্কটি নষ্ট হয়েছে তবে আপনি ঠিক বলেছেন। এই সমস্যাটি ইনপুট স্ট্রিংয়ের মাধ্যমে পুনরাবৃত্তি করে, প্রতিটি অ-বর্ণমালা, অ-সংখ্যাযুক্ত এবং অ-স্থানের অক্ষর মুছে ফেলার মাধ্যমে সমাধান করা যেতে পারে বলে আমি মনে করি।
ট্রিনিটি 420

0

স্ট্রিম সংস্করণ, ফিল্টার স্পেস এবং ট্যাব।

Stream.of(str.split("[ \\t]")).filter(s -> s.length() > 0).collect(Collectors.joining(" "))

0
String myText = "   Hello     World   ";
myText = myText.trim().replace(/ +(?= )/g,'');


// Output: "Hello World"

0

স্ট্রিংয়ের যে কোনও জায়গায় সাদা জায়গা সরিয়ে ফেলার সহজ পদ্ধতি।

 public String removeWhiteSpaces(String returnString){
    returnString = returnString.trim().replaceAll("^ +| +$|( )+", " ");
    return returnString;
}

-1
public class RemoveExtraSpacesEfficient {

    public static void main(String[] args) {

        String s = "my    name is    mr    space ";

        char[] charArray = s.toCharArray();

        char prev = s.charAt(0);

        for (int i = 0; i < charArray.length; i++) {
            char cur = charArray[i];
            if (cur == ' ' && prev == ' ') {

            } else {
                System.out.print(cur);
            }
            prev = cur;
        }
    }
}

উপরের সমাধানটি কোনও জাভা ফাংশন ব্যবহার না করে ও (এন) এর জটিলতার সাথে অ্যালগরিদম।


-1

নীচে কোড ব্যবহার করুন

package com.myjava.string;

import java.util.StringTokenizer;

public class MyStrRemoveMultSpaces {

    public static void main(String a[]){

        String str = "String    With Multiple      Spaces";

        StringTokenizer st = new StringTokenizer(str, " ");

        StringBuffer sb = new StringBuffer();

        while(st.hasMoreElements()){
            sb.append(st.nextElement()).append(" ");
        }

        System.out.println(sb.toString().trim());
    }
}

-1

দেরি করার জন্য হ্যালো দুঃখিত! আপনি যে সন্ধান করছেন এটি এখানে সর্বোত্তম এবং সর্বাধিক দক্ষতার উত্তর:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MyPatternReplace {

public String replaceWithPattern(String str,String replace){

    Pattern ptn = Pattern.compile("\\s+");
    Matcher mtch = ptn.matcher(str);
    return mtch.replaceAll(replace);
}

public static void main(String a[]){
    String str = "My    name    is  kingkon.  ";
    MyPatternReplace mpr = new MyPatternReplace();
    System.out.println(mpr.replaceWithPattern(str, " "));
}

সুতরাং আপনার এই উদাহরণের আউটপুটটি হবে: আমার নাম কিংকন।

তবে এই পদ্ধতিটি আপনার স্ট্রিংয়ের "\ n" কেও সরিয়ে ফেলবে। সুতরাং আপনি যদি না চান তবে কেবল এই সাধারণ পদ্ধতিটি ব্যবহার করুন:

while (str.contains("  ")){  //2 spaces
str = str.replace("  ", " "); //(2 spaces, 1 space) 
}

এবং আপনি যদি শীর্ষস্থানীয় এবং অনুসরণযোগ্য স্থানগুলি সজ্জিত করতে চান তবে কেবল যুক্ত করুন:

str = str.trim();

-1

আমি জানি যে প্রতিস্থাপনের সমস্ত পদ্ধতিটি অনেক সহজ তবে আমি এটিও পোস্ট করতে চেয়েছিলাম।

public static String removeExtraSpace(String input) {
    input= input.trim();
    ArrayList <String> x= new ArrayList<>(Arrays.asList(input.split("")));
    for(int i=0; i<x.size()-1;i++) {
        if(x.get(i).equals(" ") && x.get(i+1).equals(" ")) { 
            x.remove(i); 
            i--; 
        }
    }
    String word="";
    for(String each: x) 
        word+=each;
    return word;
}

1
যদিও এটি কাজ করে তবে এটি সহজ সমাধান থেকে দূরে।
প্ল্যাটজারশ

-1

স্ট্রিং টোকেনাইজার ব্যবহার করা যেতে পারে

 String str = "  hello    there  ";
            StringTokenizer stknzr = new StringTokenizer(str, " ");
            StringBuffer sb = new StringBuffer();
            while(stknzr.hasMoreElements())
            {
                sb.append(stknzr.nextElement()).append(" ");
            }
            System.out.println(sb.toString().trim());
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.