জাভা চরিত্র শ্রেণিতে খালি চরকে কীভাবে উপস্থাপন করা যায়


126

আমি স্ট্রিংয়ের মতো জাভাতে একটি খালি চরিত্র উপস্থাপন করতে চাই ""...

সে রকমই char ch = an empty character;

আসলে আমি জায়গা না রেখে কোনও চরিত্রকে প্রতিস্থাপন করতে চাই।

আমি মনে করি এটির অর্থটি বোঝার জন্য এটি যথেষ্ট হতে পারে: কোনও চরিত্র এমনকি স্থানও নয়।


2
আপনি সঞ্চালন করতে চান প্রতিস্থাপন অপারেশন এর একটি উদাহরণ দেখান।
সুডোকোড

1
@ রাহুলস্রি আপনি যে কোডটি উল্লেখ করছেন তা আমি দেখতে পাচ্ছি না।
পিটার লরি

2
আমি মনে করি যে ওপি String.replace(' ', EMPTY_CHARACTER)একই প্রভাব রাখতে পারফর্ম করতে চায় String.replace(" ", "")। অর্থাৎ সমস্ত স্থান সরিয়ে ফেলুন।
রোল্যান্ড

উত্তর:


134

আপনি বরাদ্দ করতে পারেন '\u0000'(বা 0)। এই উদ্দেশ্যে, ব্যবহার করুন Character.MIN_VALUE

Character ch = Character.MIN_VALUE;

5
কী '\0'ঠিক মানে? @ এভিডি
দারুচিনি টোস্ট

8
@ সিনামনটোস্ট - এটি একটি নাল চর আক্ষরিক
অ্যাডটাপস্ট

11
একটি নাল চর আক্ষরিক এখনও একটি চরিত্র এবং সঞ্চয়স্থানে স্থান নেয়।
জিমি টি।

7
প্রশ্নটি 'কোনও অক্ষর নয়' উপস্থাপনের জন্য একটি উপায় জিজ্ঞাসা করে। নাল চরিত্রটি অনেক পরিস্থিতিতে কার্যকর হলেও এটি এখনও তার নিজের একটি চরিত্র, তাই এই প্রশ্নের উত্তর হতে পারে না। সঠিক উত্তর, ইতিমধ্যে user3001 দ্বারা প্রদত্ত, জাভাটির বক্সযুক্ত চরিত্রের রেফারেন্স প্রকারটি ব্যবহার করা এবং যখন 'কোনও অক্ষর' প্রয়োজন না হয় তখন এটিকে 'নাল' মান দেওয়া।
ক্রিস হ্যাটন

2
@ অ্যাভিডি হ্যাঁ, এবং রাহুলসারি জিজ্ঞাসা করেছেন যে কীভাবে কোনও অনুপস্থিত চরিত্রটি উপস্থাপন করতে হয়। সুতরাং একটি নাল চরিত্রের রেফারেন্স ফিট করে।
ক্রিস হ্যাটন

97

charহ'ল এক চরিত্রের অর্থ। আপনি এই ধরণের শূন্য অক্ষর বরাদ্দ করতে পারবেন না।

এর অর্থ এই যে কোনও চর মান নেই যার জন্য String.replace(char, char)একটি পৃথক দৈর্ঘ্যের সাথে একটি স্ট্রিং ফিরে আসবে।


14
এই সত্যের তিন বছর পরে, শেষ পর্যন্ত কেউ একটি সঠিক এবং সম্পূর্ণ উত্তর দিয়েছিল।
ম্যালানরমালু

এটি একটি খুব সঠিক উত্তর।
এডগার Asatryan

36

চরিত্রটি যেমন বস্তু থেকে প্রাপ্ত একটি শ্রেণি, আপনি নালটিকে "উদাহরণ" হিসাবে নির্ধারণ করতে পারেন:

Character myChar = null;

সমস্যা সমাধান ;)


5
এটি একটি সঠিক সমাধান এবং এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
ক্রিস হ্যাটন

2
যদিও এটি ওপিটির উত্তর দেয় না, এটি আমি খুঁজছিলাম।
এলিস আবৌদা

2
সর্বাধিক সঠিক উত্তরটি "এটি করা যায় না"। এটি আপনি পেতে পারেন নিকটতম।
ম্যালনারমালুলো

2
চরিত্রটি কিন্তু চর নয়।
পিটার ডি বাই

12

একটি খালি স্ট্রিং char[]কোনও উপাদান সহ একটি মোড়ক । আপনি কোন খালি থাকতে পারে char[]। তবে আপনার "খালি" থাকতে পারে না char। অন্যান্য আদিমদের মতো, এরও charএকটি মান থাকতে হবে।

আপনি বলছেন যে আপনি "স্থান না রেখে একটি চরিত্র প্রতিস্থাপন করতে" চান।

আপনি যদি কারও সাথে ডিল করছেন char[], তবে আপনি char[]সেই উপাদানটি সরিয়ে দিয়ে নতুন তৈরি করবেন ।

আপনি যদি কারও সাথে কাজ করে থাকেন তবে চরিত্রটি সরিয়ে Stringআপনি নতুন String(স্ট্রিং পরিবর্তনযোগ্য) তৈরি করতে পারেন ।

আপনি কীভাবে কোনও চর সরিয়ে ফেলতে পারেন তার কয়েকটি নমুনা এখানে:

public static void main(String[] args) throws Exception {

    String s = "abcdefg";
    int index = s.indexOf('d');

    // delete a char from a char[]
    char[] array = s.toCharArray();
    char[] tmp = new char[array.length-1];
    System.arraycopy(array, 0, tmp, 0, index);
    System.arraycopy(array, index+1, tmp, index, tmp.length-index);
    System.err.println(new String(tmp));

    // delete a char from a String using replace
    String s1 = s.replace("d", "");
    System.err.println(s1);

    // delete a char from a String using StringBuilder
    StringBuilder sb = new StringBuilder(s);
    sb.deleteCharAt(index);
    s1 = sb.toString();
    System.err.println(s1);

}

সমাধান () সমাধান ছাড়াও অন্য দুটি চরিত্রের প্রথম উপস্থিতিটি প্রতিস্থাপন করবে এবং সমস্তটিই নয়।
স্যাটিউ করুন

8

হিসাবে charsইন্টিজার (হওয়া ASCII-কোড) হিসাবে প্রতিনিধিত্ব করা যেতে পারে, আপনি কেবল লিখতে পারেন:

char c = 0;

এএসসিআইআই কোডের 0 টি null


ইউটিএফ -16 কোড ইউনিট হিসাবে 0 ( charইউনিকোড কোডপয়েন্ট U + 0000 এর জন্য সম্পূর্ণ ইউটিএফ -16 এনকোডিং। কিছু অন্যান্য অক্ষর সেট বা অক্ষর এনকোডিং এর সাথে কোনও মিল অপ্রাসঙ্গিক। ইউটিএফ -16 হ'ল জাভা যা ব্যবহার করে।
টম ব্লডজেট

6

আপনি যদি কোনও খালি জায়গা না রেখে কোনও স্ট্রিংয়ের কোনও অক্ষর প্রতিস্থাপন করতে চান তবে আপনি স্ট্রিংবিল্ডার ব্যবহার করে এটি অর্জন করতে পারেন। স্ট্রিং জাভাতে অপরিবর্তনীয় বস্তু, আপনি এটি পরিবর্তন করতে পারবেন না।

String str = "Hello";
StringBuilder sb = new StringBuilder(str);
sb.deleteCharAt(1); // to replace e character

3

আপনি পারবেন না। "" স্ট্রিংয়ের জন্য আক্ষরিক, যার কোনও অক্ষর নেই। এটিতে "খালি চরিত্র" থাকে না (আপনি এর দ্বারা যা বোঝাতে চাইছেন)।


3

আমি এটা খুঁজছিলাম। কেবল সেট করুন char c = 0;এবং এটি নিখুঁতভাবে কাজ করে। চেষ্টা করে দেখুন

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

তবে অন্য একটি উপায় হ'ল স্ট্রিংটিকে একটি চর অ্যারে রূপান্তর করা, দুটি ফোর-লুপ ব্যবহার করা এবং প্রতিটি অক্ষরকে বাকী স্ট্রিং / চর অ্যারের সাথে (N ^ 2 ক্রিয়াকলাপের একটি বিগ) তুলনা করা হবে, তারপরে প্রতিটি নকলের জন্য এই চরটি ঠিক 0 তে সেট করুন

... এবং new String(char[])ফলাফলের চর অ্যারেটিকে স্ট্রিংয়ে রূপান্তর করতে ব্যবহার করুন এবং তারপরে মুদ্রণের জন্য সিসআউট করুন (এটি সমস্ত জাভা বিটিডব্লু)। আপনি শূন্যে সেট করা সমস্ত অক্ষর কেবল সেখানে নেই এবং সমস্ত নকল চলে গেছে তা পর্যবেক্ষণ করবেন। দীর্ঘ পোস্ট, কিন্তু আপনাকে কেবল একটি উদাহরণ দিতে চেয়েছিল।

সুতরাং হ্যাঁ সেট করুন char c = 0;বা চর অ্যারের cArray[i]=0জন্য, সেই নির্দিষ্ট সদৃশ চরিত্রের জন্য সেট করুন এবং আপনি এটি সরিয়ে ফেলবেন।


2

জাভাতে খালি চরিত্রের আক্ষরিক কিছুই নেই , অন্য কথায়, "'এর বিপরীতে" "এর কোনও অর্থ নেই যার অর্থ খালি স্ট্রিং আক্ষরিক

শূন্য চরিত্রের আক্ষরিক প্রতিনিধিত্ব করতে আপনি যে নিকটতম স্থানে যেতে পারেন তা হ'ল শূন্য দৈর্ঘ্যের চর [] এর মাধ্যমে, এরকম কিছু:

char[] cArr = {};         // cArr is a zero length array
char[] cArr = new char[0] // this does the same

আপনি যদি স্ট্রিং ক্লাসটি উল্লেখ করেন তবে এর ডিফল্ট কনস্ট্রাক্টর ব্যবহার করে একটি খালি অক্ষর ক্রম তৈরি করে new char[0]

এছাড়াও, ক্যারেক্টার.এম.কেভ্যালু ব্যবহার করা সঠিক নয় কারণ এটি সত্যই ফাঁকা অক্ষর নয় বরং টাইপ চরিত্রের ক্ষুদ্রতম মান।

আমি সমাধান হিসাবেও Character c = null;মূলত পছন্দ করি না কারণ জেভিএম এনপিই নিক্ষেপ করবে যদি এটি আন-বক্স করার চেষ্টা করে। দ্বিতীয়ত, নাল মূলত আর্ট রেফারেন্স টাইপের কিছুই নয় এবং এখানে আমরা আদিম প্রকারের সাথে কাজ করছি যা নালকে একটি সম্ভাব্য মান হিসাবে গ্রহণ করে না।

এই স্ট্রিং ধরে ধরে, str বলুন, ওপি একটি অক্ষরের সমস্ত উপস্থিতি প্রতিস্থাপন করতে চায়, 'x', ফাঁকা চরিত্রের সাহায্যে '' বলবে, তারপরে ব্যবহার করে দেখুন:

str.replace("x", "");

1

এইভাবে আমি এটি করি।

char[] myEmptyCharArray = "".toCharArray();

এটি কোনও খালি চরিত্র নয়। এটি একটি শূন্য দৈর্ঘ্যের অক্ষরের অ্যারে।
স্টিফেন সি


1

আপনি এর মতো কিছু করতে পারেন:

mystring.replace(""+ch, "");

0

আপনি কেবল বিদ্যমান অক্ষরটি পুনরায় ব্যবহার করতে পারেন। উদাহরণস্বরূপ \0আপনি যদি এটি একটি স্ট্রিংয়ে রাখেন তবে এতে একটি অক্ষর সহ আপনার একটি স্ট্রিং থাকবে।


বলুন আপনি এমন একটি চান charযখন আপনি যখন করবেন

String s = 
char ch = ?
String s2 = s + ch; // there is not char which does this.
assert s.equals(s2);

পরিবর্তে আপনার যা করতে হবে তা হ'ল

String s = 
char ch = MY_NULL_CHAR;
String s2 = ch == MY_NULL_CHAR ? s : s + ch;
assert s.equals(s2);

1
মানে কি it not worked? আপনার অর্থ কি এটি সংকলন হয় না? char ch = '\0';char ch = 0;
সেক্ষেত্রে

@ রাহুলস্রি সমস্ত চরিত্রই অক্ষর এবং এমন কোন চরিত্র নেই যা চরিত্র নয়। আপনার আসল প্রয়োজনীয়তাটি কী তা আপনাকে কার্যকর করতে হবে এবং এটি অন্যভাবে সমাধান করার চেষ্টা করতে হবে। nulচরিত্র অনেক বিশেষ অক্ষর যা তার একটি অক্ষর যা সত্যিই সেখানে নেই ইঙ্গিত অন্যতম, কিন্তু এটি নিজে এখনও একটি চরিত্র।
পিটার লরি

2
"Godশ্বর যদি কিছু করতে পারেন তবে godশ্বর কি এমন একটি শিলা তৈরি করতে পারেন যা তিনি তুলতেও পারবেন না?" এটি প্রশ্নের অনুরূপ; আপনি কি এমন একটি চরিত্র তৈরি করতে পারেন যা একটি চরিত্র নয়?
পিটার লরি

0

\bদ্বিতীয় প্যারামিটারে অপারেটর (ব্যাকস্পেস এস্কেপ অপারেটর) ব্যবহার করুন

String test= "Anna Banana";

System.out.println(test); //returns Anna Banana<br><br>
System.out.println(test.replaceAll(" ","\b")); //returns AnnaBanana removing all the spaces in the string

এক্সডি ... মজাদার জিনিসগুলির ফলস্বরূপ যদি ফাইলের নামের অংশ হিসাবে এইভাবে ম্যাংলেড (হ্যাঁ, ম্যাঙ্গেলড, মোল্ডেড, ডিজাইফর্মযুক্ত) স্ট্রিং ব্যবহার করার চেষ্টা করা হয়।
স্ক্রীন

0

আরে আমি সবসময় কাস্টম স্টাফের জন্য পদ্ধতি তৈরি করি যা সাধারণত জাভাতে প্রয়োগ হয় না। স্ট্রিং ফাস্ট থেকে চরিত্র অপসারণের জন্য আমি তৈরি একটি সহজ পদ্ধতি is

    public static String removeChar(String str, char c){
        StringBuilder strNew=new StringBuilder(str.length());
        char charRead;
        for(int i=0;i<str.length();i++){
            charRead=str.charAt(i);
            if(charRead!=c)
                strNew.append(charRead);
        }
        return strNew.toString();
    }

ব্যাখ্যার জন্য, হ্যাঁ প্রতিস্থাপনের জন্য কোনও নাল চরিত্র নেই, তবে আপনি এর মতো চরিত্রটি মুছতে পারেন। আমি এটি একটি পুরানো প্রশ্ন জানি, কিন্তু আমি এই উত্তরটি পোস্ট করছি কারণ এই কোডটি কিছু ব্যক্তির পক্ষে সহায়ক হতে পারে।

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