স্ট্রিং থেকে কীভাবে একক অক্ষর সরিয়ে ফেলা যায়


128

জাভাতে কোনও স্ট্রিংয়ের স্বতন্ত্র অক্ষরগুলি অ্যাক্সেস করার জন্য আমাদের কাছে রয়েছে String.charAt(2)। জাভাতে কোনও স্ট্রিংয়ের স্বতন্ত্র চরিত্র অপসারণের জন্য কি কোনও ইনবিল্ট ফাংশন রয়েছে?

এটার মতো কিছু:

if(String.charAt(1) == String.charAt(2){
   //I want to remove the individual character at index 2. 
}

3
আপনি যেখানে এটি করতে চান সেখানে প্রকৃত উদাহরণ পোস্ট করতে পারেন?
রোহিত জৈন

আপনি সরান না প্রতিস্থাপন আছে। আপনার নিজের লেখার দরকার হতে পারে।
কোসা

আপনি একটি সঙ্গে এটা করতে পারেন coupleএর substringএবং indexOf। তবে এটি একটি নতুন স্ট্রিং অবজেক্ট তৈরি করবে।
রোহিত জৈন

স্ট্রিংবিল্ডার হ'ল অক্ষরগুলি পরিচালনা করার জন্য একটি পঠন / লেখার শ্রেণি। আপনি এটি একটি স্ট্রিং থেকে তৈরি করতে পারেন এবং ফলাফল প্রাপ্ত স্ট্রিংটি পেতে sb.toString () ব্যবহার করতে পারেন।
আউবিন

উত্তর:


227

আপনি StringBuilderক্লাসটিও পরিবর্তন করতে পারেন যা ব্যবহার করতে পারেন ।

StringBuilder sb = new StringBuilder(inputString);

এটির deleteCharAt()সাথে অনেকগুলি মিউটর পদ্ধতিও রয়েছে।

আপনার মুছতে হবে এমন অক্ষরগুলি কেবল মুছুন এবং তারপরে ফলাফলটি নিন:

String resultString = sb.toString();

এটি অপ্রয়োজনীয় স্ট্রিং অবজেক্ট তৈরি করা এড়ায়।


আপনার উত্তরটি এখানে কাজ করছে না বলে মনে হচ্ছে ... String numbers = "0123456789"; char c = '2'; numbers = numbers.replace(c, Character.MIN_VALUE); আমি '' চরিত্রটি (খালি) প্রতিস্থাপন করতে চাই
সুরজিৎ বিশ্বাস

72

একটি সম্ভাবনা:

String result = str.substring(0, index) + str.substring(index+1);

নোট করুন যে ফলাফলটি একটি নতুন স্ট্রিং (পাশাপাশি দুটি মধ্যবর্তী স্ট্রিং অবজেক্ট), কারণ জাভাতে স্ট্রিংগুলি পরিবর্তনযোগ্য নয়।


62

আপনি জাভা স্ট্রিং পদ্ধতিটি রিপ্লেস নামে ব্যবহার করতে পারেন যা প্রথম প্যারামিটারের সাথে মিলিয়ে সমস্ত অক্ষর দ্বিতীয় প্যারামিটারের সাথে প্রতিস্থাপন করবে:

String a = "Cool";
a = a.replace("o","");

15

না, কারণ জাভাতে স্ট্রিংগুলি পরিবর্তনযোগ্য। আপনি চান না এমন চরিত্রটি মুছে ফেলার জন্য আপনাকে একটি নতুন স্ট্রিং তৈরি করতে হবে।

একক চরকে স্ট্রিংয়ে cসূচক অবস্থানে প্রতিস্থাপনের জন্য , এর মতো কিছু করুন এবং মনে রাখবেন যে একটি নতুন স্ট্রিং তৈরি হবে:idxstr

String newstr = str.substring(0, idx) + str.substring(idx + 1);

1
-1: স্বতন্ত্র চরিত্রের প্রতিস্থাপনের ঠিকানাটি সমস্ত উপযুক্ত নয়। আপনি প্রশ্নের উত্তর না।
অউবিন

1
@ অউবিন আমি পৃথক চরটি প্রতিস্থাপনের জন্য আমার উত্তরটি আপডেট করেছি, আপনার ডাউনটোটটি পুনর্বিবেচনা করবে?
অস্কার লোপেজ

স্বতন্ত্র INDEXED অক্ষর প্রতিস্থাপন () পরিবর্তন করা উপযুক্ত নয়। আপনি প্রশ্নের উত্তর দিবেন না (এটি পুনরায় পড়ুন)। আমি আবার উঁচুতে পারি না ...
অউবিন

1
@ অউবিন আমার উত্তরের দ্বিতীয় ভাগটি সেই মামলার সাথে পুনরায় পড়বে, যেমন প্রশ্নটি জিজ্ঞাসা করেছিল, এখন ডাউনটোটটি সরানোর কীভাবে? উত্তরটি সঠিক, এটি প্রশ্নে জিজ্ঞাসা করা মামলার চেয়ে একটি ক্ষেত্রে অতিরিক্ত বিবেচনা করে।
এস্কার লোপেজ

7
আপনার উত্তর এখন সম্পূর্ণ আলাদা, আপনি প্রথমে "প্রতিস্থাপন ()" দ্বারা "প্রতিস্থাপন ()" প্রতিস্থাপন করেছেন, তারপরে "প্রতিস্থাপন ()" কে "সাবস্ট্রিং ()" দ্বারা প্রতিস্থাপন করেছেন। এখন, এটি অ্যাট্রেটসচের একটি ভারব্যাটিম অনুলিপি, যা খুব তাড়াতাড়ি এবং সঠিকভাবে প্রশ্নের উত্তর দিয়েছে। আপনার উত্তরটি আর কিছু যোগ করে না। এটি সরান, দয়া করে।
আউবিন

14
String str = "M1y java8 Progr5am";

deleteCharAt ()

StringBuilder build = new StringBuilder(str);
System.out.println("Pre Builder : " + build);
    build.deleteCharAt(1);  // Shift the positions front.
    build.deleteCharAt(8-1);
    build.deleteCharAt(15-2);
System.out.println("Post Builder : " + build);

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

StringBuffer buffer = new StringBuffer(str);
    buffer.replace(1, 2, ""); // Shift the positions front.
    buffer.replace(7, 8, "");
    buffer.replace(13, 14, "");
System.out.println("Buffer : "+buffer);

গৃহস্থালির কাজ []

char[] c = str.toCharArray();
String new_Str = "";
    for (int i = 0; i < c.length; i++) {
        if (!(i == 1 || i == 8 || i == 15)) 
            new_Str += c[i];
    }
System.out.println("Char Array : "+new_Str);

8

নিম্নলিখিত কোড বিবেচনা করুন:

public String removeChar(String str, Integer n) {
    String front = str.substring(0, n);
    String back = str.substring(n+1, str.length());
    return front + back;
}

4

আপনি (বিশাল) রিজেক্সপ মেশিনটিও ব্যবহার করতে পারেন।

inputString = inputString.replaceFirst("(?s)(.{2}).(.*)", "$1$2");
  • "(?s)" - সাধারণ অক্ষরের মতো নিউলাইনগুলি হ্যান্ডেল করতে রেজিএক্সপেকে বলে (কেবলমাত্র ক্ষেত্রে)।
  • "(.{2})" - গোষ্ঠী $ 1 ঠিক 2 টি অক্ষর সংগ্রহ করছে
  • "." - সূচক 2 এ যে কোনও চরিত্র (ছিটানো হবে)।
  • "(.*)" - গ্রুপ $ 2 যা বাকী ইনপুটস্ট্রিং সংগ্রহ করে।
  • "$1$2" - গোষ্ঠী $ 1 এবং গ্রুপ together 2 একসাথে রেখে।

3

স্ট্রিংগুলি পরিমার্জন করতে স্ট্রিংবিল্ডার সম্পর্কে পড়ুন কারণ তা পরিবর্তনযোগ্য স্ট্রিং ব্যতীত পরিবর্তনীয়। বিভিন্ন অপারেশন এখানে https://docs.oracle.com/javase/tutorial/java/data/buffers.html পাওয়া যাবে । নীচের কোড স্নিপেট একটি স্ট্রিংবিল্ডার তৈরি করে এবং তারপরে প্রদত্ত স্ট্রিং যুক্ত করুন এবং তারপরে স্ট্রিং থেকে প্রথম অক্ষর মুছুন এবং তারপরে স্ট্রিংবিল্ডার থেকে স্ট্রিংয়ে ফিরে রূপান্তর করুন।

StringBuilder sb = new StringBuilder();

sb.append(str);
sb.deleteCharAt(0);
str = sb.toString();

1

স্ট্রিং ক্লাসের রিপ্লেস্টফার্স ফাংশনটি ব্যবহার করুন। প্রতিস্থাপন ফাংশনের অনেকগুলি রূপ রয়েছে যা আপনি ব্যবহার করতে পারেন।


1

চরিত্র অপসারণের জন্য যদি আপনার কিছু যৌক্তিক নিয়ন্ত্রণ প্রয়োজন হয় তবে এটি ব্যবহার করুন

String string = "sdsdsd";
char[] arr = string.toCharArray();
// Run loop or whatever you need
String ss = new String(arr);

আপনার যদি এ জাতীয় কোনও নিয়ন্ত্রণের প্রয়োজন না হয় তবে আপনি অস্কার বা ভেশে যা উল্লেখ করেছেন তা ব্যবহার করতে পারেন। তারা স্পট হয়।


1

রিপ্লেস পদ্ধতিটি ব্যবহার করে আমরা স্ট্রিংয়ের একক অক্ষর পরিবর্তন করতে পারি।

string= string.replace("*", "");

1

স্ট্রিং থেকে কোনও চর অপসারণের সহজ উপায়

String str="welcome";
str=str.replaceFirst(String.valueOf(str.charAt(2)),"");//'l' will replace with "" 
System.out.println(str);//output: wecome

1
public class RemoveCharFromString {
    public static void main(String[] args) {
        String output = remove("Hello", 'l');
        System.out.println(output);
    }

    private static String remove(String input, char c) {

        if (input == null || input.length() <= 1)
            return input;
        char[] inputArray = input.toCharArray();
        char[] outputArray = new char[inputArray.length];
        int outputArrayIndex = 0;
        for (int i = 0; i < inputArray.length; i++) {
            char p = inputArray[i];
            if (p != c) {
                outputArray[outputArrayIndex] = p;
                outputArrayIndex++;
            }

        }
        return new String(outputArray, 0, outputArrayIndex);

    }
}

1

বেশিরভাগ ব্যবহারের ক্ষেত্রে ব্যবহার করা StringBuilderবা substringএকটি ভাল পদ্ধতির (যেমন ইতিমধ্যে জবাব দেওয়া হয়েছে)। যাইহোক, কার্য সম্পাদন সমালোচনামূলক কোডের জন্য, এটি একটি ভাল বিকল্প হতে পারে।

/**
 * Delete a single character from index position 'start' from the 'target' String.
 * 
 * ````
 * deleteAt("ABC", 0) -> "BC"
 * deleteAt("ABC", 1) -> "B"
 * deleteAt("ABC", 2) -> "C"
 * ````
 */
public static String deleteAt(final String target, final int start) {
    return deleteAt(target, start, start + 1);
} 


/**
 * Delete the characters from index position 'start' to 'end' from the 'target' String.
 * 
 * ````
 * deleteAt("ABC", 0, 1) -> "BC"
 * deleteAt("ABC", 0, 2) -> "C"
 * deleteAt("ABC", 1, 3) -> "A"
 * ````
 */
public static String deleteAt(final String target, final int start, int end) {
    final int targetLen = target.length();
    if (start < 0) {
        throw new IllegalArgumentException("start=" + start);
    }
    if (end > targetLen || end < start) {
        throw new IllegalArgumentException("end=" + end);
    }
    if (start == 0) {
        return end == targetLen ? "" : target.substring(end);
    } else if (end == targetLen) {
        return target.substring(0, start);
    }
    final char[] buffer = new char[targetLen - end + start];
    target.getChars(0, start, buffer, 0);
    target.getChars(end, targetLen, buffer, start);
    return new String(buffer);
}

1

* আপনি স্ট্রিংবিল্ডার এবং ডিলিটচার্ট ব্যবহার করে স্ট্রিংয়ের মান মুছতে পারেন।

String s1 = "aabc";
StringBuilder sb = new StringBuilder(s1);
for(int i=0;i<sb.length();i++)
{
  char temp = sb.charAt(0);
  if(sb.indexOf(temp+"")!=1)
  {                             
    sb.deleteCharAt(sb.indexOf(temp+""));   
  }
}

1

হ্যাঁ. জাভাতে কোনও স্ট্রিংয়ের স্বতন্ত্র চরিত্রটি মুছে ফেলার জন্য আমাদের ইনবিল্ট ফাংশন রয়েছে, এটি হ'ল ডিলিটচার্ট

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

public class StringBuilderExample 
{
   public static void main(String[] args) 
   {
      StringBuilder sb = new StringBuilder("helloworld");
      System.out.println("Before : " + sb);
      sb = sb.deleteCharAt(3);
      System.out.println("After : " + sb);
   }
}

আউটপুট

Before : helloworld
After : heloworld

1

আপনি যদি কোনও নির্দিষ্ট ইনড ইনডেক্সে স্ট্রিং স্ট্র থেকে একটি চর সরিয়ে দিতে চান :

    public static String removeCharAt(String str, int index) {

        // The part of the String before the index:
        String str1 = str.substring(0,index);

        // The part of the String after the index:            
        String str2 = str.substring(index+1,str.length());

        // These two parts together gives the String without the specified index
        return str1+str2;

    }

0
public static String removechar(String fromString, Character character) {
    int indexOf = fromString.indexOf(character);
    if(indexOf==-1) 
        return fromString;
    String front = fromString.substring(0, indexOf);
    String back = fromString.substring(indexOf+1, fromString.length());
    return front+back;
}

0
           BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
   String line1=input.readLine();
   String line2=input.readLine();
         char[]  a=line2.toCharArray();
          char[] b=line1.toCharArray();
           loop: for(int t=0;t<a.length;t++) {

            char a1=a[t];
           for(int t1=0;t1<b.length;t1++) {
               char b1=b[t1];  
               if(a1==b1) {
                   StringBuilder sb = new StringBuilder(line1);
                   sb.deleteCharAt(t1);
                   line1=sb.toString();
                   b=line1.toCharArray();
                   list.add(a1);
                   continue  loop;   
               }


            }

0

আমার যখন এই ধরণের প্রশ্ন থাকে তখন আমি সর্বদা জিজ্ঞাসা করি: "জাভা গুরুরা কী করবে?" :)

এবং আমি উত্তর দিতে চাই, এই ক্ষেত্রে, এর বাস্তবায়ন দেখে String.trim()

এখানে সেই বাস্তবায়নটির একটি এক্সট্রোপোলেশন যা আরও ট্রিম অক্ষর ব্যবহার করার অনুমতি দেয়।

তবে নোট করুন যে আসল ট্রিমটি প্রকৃতপক্ষে সমস্ত অক্ষর সরিয়ে দেয় <= ' 'তাই কাঙ্ক্ষিত ফলাফল পেতে আপনাকে এটিকে মূলটির সাথে একত্রিত করতে হতে পারে।

String trim(String string, String toTrim) {
    // input checks removed
    if (toTrim.length() == 0)
        return string;

    final char[] trimChars = toTrim.toCharArray();
    Arrays.sort(trimChars);

    int start = 0;
    int end = string.length();

    while (start < end && 
        Arrays.binarySearch(trimChars, string.charAt(start)) >= 0)
        start++;

    while (start < end && 
        Arrays.binarySearch(trimChars, string.charAt(end - 1)) >= 0)
        end--;

    return string.substring(start, end);
}

0
public String missingChar(String str, int n) {
  String front = str.substring(0, n);

// Start this substring at n+1 to omit the char.
// Can also be shortened to just str.substring(n+1)
// which goes through the end of the string.

String back = str.substring(n+1, str.length());
  return front + back;
}

0

প্রদত্ত স্ট্রিং থেকে একটি একক অক্ষর অপসারণ করতে দয়া করে আমার পদ্ধতিটি আশা করুন এটি কার্যকর হবে। আমি স্ট্রিং মুছে ফেলার জন্য str.replaceAll ব্যবহার করেছি তবে প্রদত্ত স্ট্রিং থেকে একটি অক্ষর মুছে ফেলার অনেকগুলি উপায় তবে আমি প্রতিস্থাপন পদ্ধতিটি পছন্দ করি।

চর সরানোর কোড:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;


public class Removecharacter 
{

    public static void main(String[] args) 
    {
        String result = removeChar("Java", 'a');
        String result1 = removeChar("Edition", 'i');

         System.out.println(result + " " + result1);

    }


    public static String removeChar(String str, char c) {
        if (str == null)
        {
            return null;
        }
        else
        {   
        return str.replaceAll(Character.toString(c), "");
        }
    }


}

কনসোল চিত্র:

দয়া করে কনসোলের সংযুক্ত চিত্রটি সন্ধান করুন,

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

জিজ্ঞাসা করার জন্য ধন্যবাদ. :)


0

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

package your.package.name;

/**
 * Utility class that removes chars from a String.
 * 
 */
public class RemoveChars {

    public static String remove(String string, String remove) {
        return new String(remove(string.toCharArray(), remove.toCharArray()));
    }

    public static char[] remove(final char[] chars, char[] remove) {

        int count = 0;
        char[] buffer = new char[chars.length];

        for (int i = 0; i < chars.length; i++) {

            boolean include = true;
            for (int j = 0; j < remove.length; j++) {
                if ((chars[i] == remove[j])) {
                    include = false;
                    break;
                }
            }

            if (include) {
                buffer[count++] = chars[i];
            }
        }

        char[] output = new char[count];
        System.arraycopy(buffer, 0, output, 0, count);

        return output;
    }

    /**
     * For tests!
     */
    public static void main(String[] args) {

        String string = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG";
        String remove = "AEIOU";

        System.out.println();
        System.out.println("Remove AEIOU: " + string);
        System.out.println("Result:       " + RemoveChars.remove(string, remove));
    }
}

এটি আউটপুট:

Remove AEIOU: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
Result:       TH QCK BRWN FX JMPS VR TH LZY DG

-2

উদাহরণস্বরূপ, যদি আপনি স্ট্রিংয়ে কয়টি রয়েছে তা গণনা করতে চান, আপনি এটি এটি করতে পারেন:

if (string.contains("a"))
{
    numberOf_a++;
    string = string.replaceFirst("a", "");
}

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