জাভাতে, আমার কাছে একটি স্ট্রিং রয়েছে:
Jamaica
আমি স্ট্রিংয়ের প্রথম অক্ষরটি সরিয়ে আবার ফিরে যেতে চাই amaica
আমি এই কিভাবে করব?
জাভাতে, আমার কাছে একটি স্ট্রিং রয়েছে:
Jamaica
আমি স্ট্রিংয়ের প্রথম অক্ষরটি সরিয়ে আবার ফিরে যেতে চাই amaica
আমি এই কিভাবে করব?
উত্তর:
স্ট্রিংয়ের শেষে পজিশন 1 ( প্রথম চরিত্রের পরে ) থেকে স্ট্রিংয়ের শেষে (দ্বিতীয় যুক্তিটিকে স্ট্রিংয়ের সম্পূর্ণ দৈর্ঘ্যের ডিফল্টে রেখে) substring()
আর্গুমেন্ট সহ ফাংশনটি ব্যবহার করুন ।1
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
।
substring()
আপনি সামনে থেকে যে পরিমাণ অক্ষর ছাঁটাতে চান তা ব্যবহার করুন এবং দিন।
String value = "Jamaica";
value = value.substring(1);
উত্তর: "আমাইকা"
আপনার চরিত্রটি অপসারণের আগে সেখানে উপস্থিত রয়েছে কিনা তা দ্রুত পরীক্ষা করতে জাভা টার্নারি অপারেটরটি ব্যবহার করুন। এটি যদি শীর্ষস্থানীয় চরিত্রটি উপস্থিত থাকে তবেই যদি ফাঁকা স্ট্রিং উত্তীর্ণ হয় তবে ফাঁকা স্ট্রিংটি ফিরবে।
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"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
আপনি ক্লাসের সাবস্ট্রিং পদ্ধতিটি ব্যবহার করতে পারেন যা String
কেবল সূচনা সূচি নেয় এবং নির্দিষ্ট সূচীতে অক্ষরের সাথে শুরু হওয়া এবং স্ট্রিংয়ের শেষ অবধি প্রসারিত স্ট্রিংগুলি প্রদান করে।
String str = "Jamaica";
str = str.substring(1);
জাভাতে বোঝার মূল বিষয়টি হল স্ট্রিংগুলি অপরিবর্তনীয় - আপনি সেগুলি পরিবর্তন করতে পারবেন না। সুতরাং 'স্ট্রিং থেকে একটি চরিত্র অপসারণ' কথা বলার অর্থ নেই। পরিবর্তে, আপনি চান কেবল অক্ষরগুলি দিয়ে আপনি একটি নতুন স্ট্রিং তৈরি করেন। এই প্রশ্নের অন্যান্য পোস্টগুলি আপনাকে এটি করার বিভিন্ন ধরণের উপায় দেয় তবে এটি বুঝতে গুরুত্বপূর্ণ যে এগুলি কোনওভাবেই মূল স্ট্রিংটি পরিবর্তন করে না। পুরানো স্ট্রিংয়ের সাথে আপনার যে কোনও রেফারেন্স পুরানো স্ট্রিংকে উল্লেখ করা অবিরত থাকবে (যদি না আপনি তাদের আলাদা স্ট্রিংয়ের জন্য উল্লেখ করে থাকেন) এবং নতুন তৈরি স্ট্রিং দ্বারা প্রভাবিত হবে না।
পারফরম্যান্সের জন্য এর বেশ কয়েকটি নিদর্শন রয়েছে। প্রতিবার আপনি যখন কোনও স্ট্রিংকে 'সংশোধন' করছেন, আপনি আসলে সমস্ত ওভারহেডযুক্ত (মেমরি বরাদ্দ এবং আবর্জনা সংগ্রহ) দিয়ে একটি নতুন স্ট্রিং তৈরি করছেন। সুতরাং আপনি যদি স্ট্রিংয়ে কয়েকটি ধারাবাহিক পরিবর্তন করতে চান এবং কেবলমাত্র চূড়ান্ত ফলাফলের বিষয়ে যত্নশীল হন (মধ্যবর্তী স্ট্রিংগুলি আপনি তাদের 'সংশোধন করার সাথে সাথেই মরে যাবেন), তার পরিবর্তে স্ট্রিংবিল্ডার বা স্ট্রিংবফার ব্যবহার করা আরও বোধগম্য হতে পারে।
() সাবস্ট্রিং পদ্ধতি আয় একটি নতুন স্ট্রিং একটি রয়েছে subsequence অক্ষরের বর্তমানে এই ক্রমানুসারে রয়েছে।
সাবস্ট্রিং নির্দিষ্ট শুরু start
এবং চরিত্র প্রসারিত index end - 1
।
এর দুটি রূপ রয়েছে। প্রথমটি হচ্ছে
String substring(int FirstIndex)
এখানে, ফার্স্টইন্ডেক্স সূচকটি নির্দিষ্ট করে যেখানে স্ট্রিং শুরু হবে। এই ফর্মটি ফার্স্ট ইনডেক্স থেকে শুরু হওয়া এবং স্ট্রিংয়ের শেষে চলে এমন স্ট্রিংয়ের একটি অনুলিপি প্রদান করে।
String substring(int FirstIndex, int endIndex)
এখানে, ফার্স্ট ইন্ডেক্স সূচনা সূচকটি নির্দিষ্ট করে এবং শেষের সূচকটি স্টপিং পয়েন্টটি নির্দিষ্ট করে। প্রাপ্ত স্ট্রিংটিতে প্রারম্ভিক সূচক থেকে শুরু করে শেষ সূচক পর্যন্ত সমস্ত অক্ষর রয়েছে।
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
আমি এমন একটি পরিস্থিতি পেরিয়ে এসেছি যেখানে আমাকে কেবল প্রথম চরিত্রটিই মুছে ফেলতে হয়নি (এটি যদি একটি হয় #
তবে চরিত্রগুলির প্রথম সেট)।
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
এবং এটি পাশাপাশি কাজ করে।
আর একটি সমাধান, আপনি উদাহরণস্বরূপ replaceAll
কিছু রেজেেক্স ^.{1}
( রেজেক্স ডেমো ) ব্যবহার করে আপনার সমস্যার সমাধান করতে পারেন :
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
শীর্ষস্থানীয় অক্ষর, এক বা একাধিক মুছে ফেলার আমার সংস্করণ। উদাহরণস্বরূপ, স্ট্রিং 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);
}