জাভা - একটি স্ট্রিংয়ের প্রথম অক্ষর মুছে ফেলা হচ্ছে


215

জাভাতে, আমার কাছে একটি স্ট্রিং রয়েছে:

Jamaica

আমি স্ট্রিংয়ের প্রথম অক্ষরটি সরিয়ে আবার ফিরে যেতে চাই amaica

আমি এই কিভাবে করব?

উত্তর:


341

স্ট্রিংয়ের শেষে পজিশন 1 ( প্রথম চরিত্রের পরে ) থেকে স্ট্রিংয়ের শেষে (দ্বিতীয় যুক্তিটিকে স্ট্রিংয়ের সম্পূর্ণ দৈর্ঘ্যের ডিফল্টে রেখে) substring()আর্গুমেন্ট সহ ফাংশনটি ব্যবহার করুন ।1

"Jamaica".substring(1);

21
এটি গুরুত্বপূর্ণ যে এটি স্ট্রিং থেকে অক্ষরটি সরিয়ে দেয় না - এটি আপনাকে একটি নতুন স্ট্রিং দেয় যাতে প্রথমটি বাদে পুরানো স্ট্রিংয়ের সমস্ত অক্ষর রয়েছে। আসলে কোনও স্ট্রিং সংশোধন করার কোনও উপায় নেই।
ক্রিস ডোড

লিঙ্কটি আর বৈধ নয় বলে মনে হচ্ছে। পরিবর্তে নিম্নলিখিত লিঙ্কটি ব্যবহার করে দেখুন: সাবস্ট্রিং (ইনট)
ক্রিশ্চিয়ান হফম্যান

1
হ্যাঁ, আপনি যদি কোনও স্ট্রিং ভেরিয়েবলের প্রথম এন অক্ষরগুলি সরাতে চান তবে আপনি এটি করুন: ভেরিয়েবল = ভেরিয়েবল.সুবস্ট্রিং (এন);
মিতুলাট বিটি

67
public String removeFirstChar(String s){
   return s.substring(1);
}

12
আপনি যদি কোনও নতুন ফাংশন সংজ্ঞায়িত করতে চলেছেন তবে কমপক্ষে একটি উপযুক্ত নাম চয়ন করুন removeFirst()
মoinনুদিন


47

জাভাতে, নেতৃস্থানীয় চরিত্রটি কেবলমাত্র একটি নির্দিষ্ট অক্ষর হলে সরিয়ে ফেলুন

আপনার চরিত্রটি অপসারণের আগে সেখানে উপস্থিত রয়েছে কিনা তা দ্রুত পরীক্ষা করতে জাভা টার্নারি অপারেটরটি ব্যবহার করুন। এটি যদি শীর্ষস্থানীয় চরিত্রটি উপস্থিত থাকে তবেই যদি ফাঁকা স্ট্রিং উত্তীর্ণ হয় তবে ফাঁকা স্ট্রিংটি ফিরবে।

String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

ছাপে:

blankstring
foobar
moobar

জাভা, কোনও স্ট্রিং-এর যে কোনও বর্ণের সমস্ত দৃষ্টান্ত সরিয়ে ফেলুন:

String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"

জাভা, কোনও স্ট্রিংয়ের যে কোনও বর্ণের প্রথম উদাহরণটি সরিয়ে ফেলুন:

String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"

4
DRY:header = header.substring(header.startsWith("#") ? 1 : 0);
অ্যারন ব্লেনকুশ 19 '

3
বা রেজেক্স সহ:header = header.replaceFirst("^#","");
অ্যারন ব্লেনকুশ

18

আপনি ক্লাসের সাবস্ট্রিং পদ্ধতিটি ব্যবহার করতে পারেন যা Stringকেবল সূচনা সূচি নেয় এবং নির্দিষ্ট সূচীতে অক্ষরের সাথে শুরু হওয়া এবং স্ট্রিংয়ের শেষ অবধি প্রসারিত স্ট্রিংগুলি প্রদান করে।

String str = "Jamaica";
str = str.substring(1);


11

জাভাতে বোঝার মূল বিষয়টি হল স্ট্রিংগুলি অপরিবর্তনীয় - আপনি সেগুলি পরিবর্তন করতে পারবেন না। সুতরাং 'স্ট্রিং থেকে একটি চরিত্র অপসারণ' কথা বলার অর্থ নেই। পরিবর্তে, আপনি চান কেবল অক্ষরগুলি দিয়ে আপনি একটি নতুন স্ট্রিং তৈরি করেন। এই প্রশ্নের অন্যান্য পোস্টগুলি আপনাকে এটি করার বিভিন্ন ধরণের উপায় দেয় তবে এটি বুঝতে গুরুত্বপূর্ণ যে এগুলি কোনওভাবেই মূল স্ট্রিংটি পরিবর্তন করে না। পুরানো স্ট্রিংয়ের সাথে আপনার যে কোনও রেফারেন্স পুরানো স্ট্রিংকে উল্লেখ করা অবিরত থাকবে (যদি না আপনি তাদের আলাদা স্ট্রিংয়ের জন্য উল্লেখ করে থাকেন) এবং নতুন তৈরি স্ট্রিং দ্বারা প্রভাবিত হবে না।

পারফরম্যান্সের জন্য এর বেশ কয়েকটি নিদর্শন রয়েছে। প্রতিবার আপনি যখন কোনও স্ট্রিংকে 'সংশোধন' করছেন, আপনি আসলে সমস্ত ওভারহেডযুক্ত (মেমরি বরাদ্দ এবং আবর্জনা সংগ্রহ) দিয়ে একটি নতুন স্ট্রিং তৈরি করছেন। সুতরাং আপনি যদি স্ট্রিংয়ে কয়েকটি ধারাবাহিক পরিবর্তন করতে চান এবং কেবলমাত্র চূড়ান্ত ফলাফলের বিষয়ে যত্নশীল হন (মধ্যবর্তী স্ট্রিংগুলি আপনি তাদের 'সংশোধন করার সাথে সাথেই মরে যাবেন), তার পরিবর্তে স্ট্রিংবিল্ডার বা স্ট্রিংবফার ব্যবহার করা আরও বোধগম্য হতে পারে।


9

আপনি এই মত করতে পারেন:

String str="Jamaica";
str=str.substring(1, title.length());
return str;

বা সাধারণভাবে:

public String removeFirstChar(String str){
   return str.substring(1, title.length());
}

8

() সাবস্ট্রিং পদ্ধতি আয় একটি নতুন স্ট্রিং একটি রয়েছে subsequence অক্ষরের বর্তমানে এই ক্রমানুসারে রয়েছে।

সাবস্ট্রিং নির্দিষ্ট শুরু startএবং চরিত্র প্রসারিত index end - 1

এর দুটি রূপ রয়েছে। প্রথমটি হচ্ছে

  1. String substring(int FirstIndex)

এখানে, ফার্স্টইন্ডেক্স সূচকটি নির্দিষ্ট করে যেখানে স্ট্রিং শুরু হবে। এই ফর্মটি ফার্স্ট ইনডেক্স থেকে শুরু হওয়া এবং স্ট্রিংয়ের শেষে চলে এমন স্ট্রিংয়ের একটি অনুলিপি প্রদান করে।

  1. String substring(int FirstIndex, int endIndex)

এখানে, ফার্স্ট ইন্ডেক্স সূচনা সূচকটি নির্দিষ্ট করে এবং শেষের সূচকটি স্টপিং পয়েন্টটি নির্দিষ্ট করে। প্রাপ্ত স্ট্রিংটিতে প্রারম্ভিক সূচক থেকে শুরু করে শেষ সূচক পর্যন্ত সমস্ত অক্ষর রয়েছে।

উদাহরণ

    String str="Amiyo";
   // prints substring from index 3
   System.out.println("substring is = " + str.substring(3)); // Output "yo'

4

আমি এমন একটি পরিস্থিতি পেরিয়ে এসেছি যেখানে আমাকে কেবল প্রথম চরিত্রটিই মুছে ফেলতে হয়নি (এটি যদি একটি হয় #তবে চরিত্রগুলির প্রথম সেট)।

String myString = ###Hello Worldসূচনা পয়েন্ট হতে পারে, তবে আমি কেবল এটিই রাখতে চাই Hello World। এটি নিম্নলিখিত হিসাবে করা যেতে পারে।

while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
    myString = myString.substring(1, myString.length());
}

ওপির ক্ষেত্রে, এর whileসাথে প্রতিস্থাপন করুন ifএবং এটি পাশাপাশি কাজ করে।


1
মাইস্ট্রিং == "#" থাকলে একটি সমস্যা হবে কারণ স্ট্রিংটি এক পর্যায়ে সীমার বাইরে চলে যাবে। এটি প্রতিরোধ করতে, আপনি (! MyString.isEmpty () && myString.charAt (0)) করতে পারেন
খ্রিস্টান

2

আর একটি সমাধান, আপনি উদাহরণস্বরূপ replaceAllকিছু রেজেেক্স ^.{1}( রেজেক্স ডেমো ) ব্যবহার করে আপনার সমস্যার সমাধান করতে পারেন :

String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica

1

শীর্ষস্থানীয় অক্ষর, এক বা একাধিক মুছে ফেলার আমার সংস্করণ। উদাহরণস্বরূপ, স্ট্রিং str1 = "01234", যখন নেতৃস্থানীয় '0' অপসারণ করবেন, ফলাফল "1234" হবে। স্ট্রিংয়ের জন্য str2 = "000123" ফলাফলটি আবার "123" হবে। এবং স্ট্রিংয়ের জন্য str3 = "000" ফলাফল খালি স্ট্রিং হবে: ""। সংখ্যার স্ট্রিংগুলিকে সংখ্যায় রূপান্তর করার সময় এই জাতীয় কার্যকারিতা প্রায়শই দরকারী re বিপুল সংখ্যক স্ট্রিংগুলির প্রক্রিয়া করার সময় এটি গুরুত্বপূর্ণ।

 public static String removeLeadingChar(String str, char ch) {
    int idx = 0;
    while ((idx < str.length()) && (str.charAt(idx) == ch))
        idx++;
    return str.substring(idx);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.