উত্তর:
আপনি String#replaceAll()
এটির জন্য একটি প্যাটার্ন দিয়ে ব্যবহার করতে পারেন ^\"|\"$
।
যেমন
string = string.replaceAll("^\"|\"$", "");
নিয়মিত এক্সপ্রেশন সম্পর্কে আরও জানতে, http://regular-expression.info এ আল uk করুন ।
এটি বলেছিল, এটির থেকে কিছুটা গন্ধ লাগে যে আপনি কোনও সিএসভি পার্সার আবিষ্কার করার চেষ্টা করছেন। যদি তা হয় তবে আমি বিদ্যমান লাইব্রেরিগুলি যেমন ওপেনসিএসভি এর জন্য সন্ধানের পরামর্শ দেব ।
String#indexOf()
, String#substring()
, পদ্ধতি ইত্যাদি। এটি কেবলমাত্র একটি সামান্য বাচ্চা দ্রুত, তবে এটি আরও অনেক বেশি কোড। @ জি কে: উহ, আপনি কি রেজেক্সটি পড়ে / বুঝতে পেরেছেন বা পরীক্ষা করেছেন?
^\"|\"$
। |
"বা" এর অর্থ। এটা এইভাবে পারেন ম্যাচ হবে ^\"
বা \"$
। ^
স্ট্রিংয়ের সূচনা এবং স্ট্রিংয়ের $
শেষের সাথে মিল। ^\"
মানে স্ট্রিংয়ের শুরুতে \"$
একটি উদ্ধৃতিটি মিলবে এবং স্ট্রিংয়ের শেষে একটি উদ্ধৃতিটির সাথে মেলে।
স্ট্রিং থেকে প্রথম অক্ষর এবং শেষ অক্ষরটি সরাতে, ব্যবহার করুন:
myString = myString.substring(1, myString.length()-1);
অ্যাপাচি সহ StringUtils.strip()
:
StringUtils.strip(null, *) = null
StringUtils.strip("", *) = ""
StringUtils.strip("abc", null) = "abc"
StringUtils.strip(" abc", null) = "abc"
StringUtils.strip("abc ", null) = "abc"
StringUtils.strip(" abc ", null) = "abc"
StringUtils.strip(" abcyx", "xyz") = " abc"
সুতরাং,
final String SchrodingersQuotedString = "may or may not be quoted";
StringUtils.strip(SchrodingersQuotedString, "\""); //quoted no more
এই পদ্ধতিটি আমার উদাহরণ হিসাবে দেখানো হিসাবে উদ্ধৃত এবং উদ্ধৃত স্ট্রিং উভয়ই কাজ করে। একমাত্র নেতিবাচক দিকটি হ'ল, এটি কঠোরভাবে মিলে যাওয়া উক্তিগুলি অনুসন্ধান করবে না , কেবলমাত্র শীর্ষস্থানীয় এবং অনুগামী উদ্ধৃতি অক্ষরগুলি (অর্থাত্: "partially
এবং "fully"
উদ্ধৃত স্ট্রিংগুলির মধ্যে কোনও পার্থক্য নেই )।
যদি ডাবল উদ্ধৃতিগুলি কেবল শুরু এবং শেষের দিকে উপস্থিত থাকে তবে এটির মতো একটি সাধারণ কোড নিখুঁতভাবে কাজ করবে:
string = string.replace("\"", "");
কোনও স্ট্রিংয়ের শুরু এবং শেষ থেকে ডাবল উদ্ধৃতিগুলি সরিয়ে ফেলার জন্য এটি আমার সেরা উপায়।
someString.replace (/(^")|("$)/g, '')
পেয়ারা ব্যবহার করে আপনি আরও মার্জিতভাবে লিখতে পারেন CharMatcher.is('\"').trimFrom(mystring);
প্রথমে, আমরা স্ট্রিংকে দ্বিগুণ করা হয়েছে কিনা তা পরীক্ষা করে দেখি এবং যদি তা হয় তবে সেগুলি সরিয়ে ফেলুন। আপনি যদি শর্তসাপেক্ষে ডাবল উদ্ধৃত হন জানেন তবে আপনি শর্তযুক্ত এড়িয়ে যেতে পারেন।
if (string.length() >= 2 && string.charAt(0) == '"' && string.charAt(string.length() - 1) == '"')
{
string = string.substring(1, string.length() - 1);
}
কোটলিনে আপনি স্ট্রিং.রেমোভসুরাউন্ডিং (ডিলিমিটার: চারসেকেন্স) ব্যবহার করতে পারেন
যেমন
string.removeSurrounding("\"")
এই স্ট্রিংটির শুরু এবং শেষ উভয় থেকেই প্রদত্ত ডিলিমিটার স্ট্রিং সরিয়ে দেয় এবং কেবল যদি এটি শুরু হয় এবং ডিলিমিটার দিয়ে শেষ হয় । অন্যথায় এই স্ট্রিংটি অপরিবর্তিত রেখে দেয়।
উত্স কোডটি এর মতো দেখাচ্ছে:
public fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)
public fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {
if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {
return substring(prefix.length, length - suffix.length)
}
return this
}
removeSurrounding()
আমি উপরে যে পদ্ধতিটি ভাগ করেছি তা আমার কাছে দেখেছিল যা কোনও জাভা বিকাশকারী সহজেই বোধগম্য হতে পারে।
নীচের প্যাটার্নটি যখন ব্যবহার করা java.util.regex.Matcher
হবে তখন স্ট্রিংয়ের ভিতরে ডাবল কোটের ঘটনাগুলি প্রভাবিত না করে ডাবল কোটের মধ্যে যে কোনও স্ট্রিং মেলে:
"[^\"][\\p{Print}]*[^\"]"
@ ব্রকলোর উত্তরটি কিছুটা পরিবর্তন করা হচ্ছে
if (string != null && string.length() >= 2 && string.startsWith("\"") && string.endsWith("\"") {
string = string.substring(1, string.length() - 1);
}
@NonNull
করা উচিত এবং এর Objects.requireNonNull(string)
ভিতরে এটির মতো সম্ভবত কিছু হওয়া উচিত কারণ যদি কেউ স্ট্রিপকোটিসকে (নাল) কল দিচ্ছে তবে তারা ভুল করে সম্ভবত এটি করছে!
scala
s.stripPrefix("\"").stripSuffix("\"")
স্ট্রিংটির শুরুতে এবং / অথবা শেষে কোট রয়েছে কি না তা নির্বিশেষে এটি কাজ করে।
সম্পাদনা: দুঃখিত, স্কেল কেবল
সম্পাদিত: কেবল উপলব্ধি করেছিলাম যে আমার উল্লেখ করা উচিত যে এগুলি কেবল তখনই দু'জনের বিদ্যমান থাকলেই কাজ করে। অন্যথায় স্ট্রিংটি উদ্ধৃত হিসাবে বিবেচনা করা হয় না। সিএসভি ফাইলগুলির সাথে কাজ করার সময় এই জাতীয় দৃশ্যটি আমার কাছে উপস্থিত হয়েছিল।
org.apache.commons.lang3.StringUtils.unwrap("\"abc\"", "\"") = "abc"
org.apache.commons.lang3.StringUtils.unwrap("\"abc", "\"") = "\"abc"
org.apache.commons.lang3.StringUtils.unwrap("abc\"", "\"") = "abc\""
private static String removeQuotesFromStartAndEndOfString(String inputStr) {
String result = inputStr;
int firstQuote = inputStr.indexOf('\"');
int lastQuote = result.lastIndexOf('\"');
int strLength = inputStr.length();
if (firstQuote == 0 && lastQuote == strLength - 1) {
result = result.substring(1, strLength - 1);
}
return result;
}
জাভাতে স্ট্রিংয়ের শুরু এবং শেষ থেকে এক বা একাধিক ডাবল উদ্ধৃতিগুলি সরাতে আপনার একটি রেজেক্স ভিত্তিক সমাধান ব্যবহার করতে হবে:
String result = input_str.replaceAll("^\"+|\"+$", "");
আপনার যদি প্রয়োজন হয় একক উদ্ধৃতিও:
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
দ্রষ্টব্য : যদি আপনার স্ট্রিংয়ের "
ভিতরে থাকে তবে এই পদ্ধতির ফলে সমস্যা হতে পারে (যেমন "Name": "John"
=> Name": "John
)।
একটি জাভা ডেমো এখানে দেখুন :
String input_str = "\"'some string'\"";
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
System.out.println(result); // => some string
প্রতিটি ডাবল উদ্ধৃতিগুলির সূচীগুলি সন্ধান করুন এবং সেখানে একটি খালি স্ট্রিং .োকান।