ধরে নেওয়া যাক:
var someStr = 'He said "Hello, my name is Foo"';
console.log(someStr.replace(/['"]+/g, ''));
এটি কৌশলটি করা উচিত ... (যদি আপনার লক্ষ্যটি সমস্ত ডাবল কোট প্রতিস্থাপন করা হয় )।
এখানে কিভাবে এটা কাজ করে:
['"]
একটি অক্ষর শ্রেণি, একক এবং ডাবল উভয় উদ্ধৃতি মেলে। আপনি এটির সাথে "
কেবলমাত্র ডাবল কোট মিলিয়ে নিতে পারেন ।
+
: পূর্ববর্তী চার-ক্লাস (definedচ্ছিক) দ্বারা সংজ্ঞায়িত করা এক বা একাধিক উক্তি, অক্ষর
g
: বিশ্ব পতাকা। এটি জেএসকে পুরো স্ট্রিংয়ে রেজেক্স প্রয়োগ করতে বলে। যদি আপনি এটি বাদ দেন তবে আপনি কেবল একটি একক চরটি প্রতিস্থাপন করবেন।
যদি আপনি প্রদত্ত স্ট্রিংয়ের (যেমন জোড়ায়) চারপাশে উদ্ধৃতিগুলি সরিয়ে দেওয়ার চেষ্টা করছেন তবে জিনিসগুলি কিছুটা জটিল হয়ে উঠবে। আপনাকে নজরদারি যুক্তি ব্যবহার করতে হবে:
var str = 'remove "foo" delimiting double quotes';
console.log(str.replace(/"([^"]+(?="))"/g, '$1'));
//logs remove foo delimiting quotes
str = 'remove only "foo" delimiting "';//note trailing " at the end
console.log(str.replace(/"([^"]+(?="))"/g, '$1'));
//logs remove only foo delimiting "<-- trailing double quote is not removed
রেজেক্স ব্যাখ্যা করেছেন:
"
: আক্ষরিক, যে কোনও আক্ষরিকের সাথে মেলে "
(
: গ্রুপ ক্যাপচার শুরু। প্রথম বন্ধনীর মধ্যে যা আছে তা ( ()
) ধরা পড়বে, এবং প্রতিস্থাপনের মানটিতে ব্যবহার করা যেতে পারে।
[^"]+
: অক্ষর শ্রেণি, 1 বা ততোধিক বার ব্যতীত সমস্ত অক্ষরের সাথে মেলে"
(?=")
: শূন্য-প্রস্থ (যেমন ধরা পড়ে না) ইতিবাচক বর্ণনাকারী উত্সাহ পূর্ববর্তী ম্যাচটি কেবল বৈধ হবে যদি এটি "
আক্ষরিক দ্বারা অনুসরণ করা হয়
)
: ক্যাপচারিং গ্রুপটি শেষ করুন, আমরা উদ্বোধনের সমাপ্তির মধ্যে সমস্ত কিছু ক্যাপচার করেছি "
"
: অন্য আক্ষরিক, সিএফ তালিকা আইটেম এক
প্রতিস্থাপনটি হ'ল '$1'
এটি হ'ল প্রথম দখলকৃত গোষ্ঠীর একটি ব্যাক-রেফারেন্স, হচ্ছে [^" ]+
বা ডাবল উদ্ধৃতিগুলির মধ্যে থাকা every প্যাটার্নটি কোট এবং তাদের মধ্যে অন্তর্নির্মিত উভয়ের সাথে মেলে, তবে কেবলমাত্র উদ্ধৃতিগুলির মধ্যে যা রয়েছে তার সাথে এটি প্রতিস্থাপন করে, ফলস্বরূপ এগুলি কার্যকরভাবে সরান।
এটি যা করে তা হ'ল some "string with" quotes
-> এর সাথে প্রতিস্থাপন "string with"
-> string with
। উক্তি চলে গেল, কাজ শেষ।
যদি উদ্ধৃতিগুলি সর্বদা স্ট্রিংয়ের শুরু এবং শেষের দিকে চলে যায় তবে আপনি এটি ব্যবহার করতে পারেন:
str.replace(/^"(.+(?="$))"$/, '$1');
ইনপুট সহ remove "foo" delimiting "
, আউটপুট অপরিবর্তিত থাকবে, তবে ইনপুট স্ট্রিংটি এতে পরিবর্তন করুন "remove "foo" delimiting quotes"
এবং আপনি remove "foo" delimiting quotes
আউটপুট হিসাবে শেষ করবেন ।
ব্যাখ্যা:
^"
: স্ট্রিং এর শুরুর সাথে মেলে ^
এবং ক "
। স্ট্রিংটি একটি দিয়ে শুরু না "
হলে এখানে ইতিমধ্যে অভিব্যক্তি ব্যর্থ হয় এবং কিছুই প্রতিস্থাপন করা হয় না।
(.+(?="$))
: এক বা একাধিকবার ডাবল উদ্ধৃতি সহ সমস্ত কিছু ম্যাচ (এবং ক্যাপচার) করে, তবে ইতিবাচক চেহারা সত্য হয় is
(?="$)
: ইতিবাচক চেহারাটি উপরের মতো অনেকটা, কেবলমাত্র এটি নির্দিষ্ট করে যে স্ট্রিংটির শেষটি হতে "
হবে ( $
=== শেষ)
"$
: সমাপ্তি উদ্ধৃতিটি মিলছে তবে এটি ক্যাপচার করে না
প্রতিস্থাপনটি পূর্বের মতো একইভাবে করা হয়: আমরা ম্যাচটি প্রতিস্থাপন করি (যার মধ্যে উদ্বোধনী এবং সমাপনী উদ্ধৃতি অন্তর্ভুক্ত), সমস্ত কিছু যা তাদের ভিতরে ছিল with
আপনি লক্ষ্য করেছেন যে আমি g
পতাকাটি বাদ দিয়েছি (বিশ্বব্যাপী বিটিডাব্লু), কারণ যেহেতু আমরা পুরো স্ট্রিংটি প্রক্রিয়াজাত করছি, এই অভিব্যক্তিটি কেবল একবার প্রযোজ্য।
একটি সহজ রেইগেক্স যা একই জিনিসটি করে (বেশ কয়েকটি একই জিনিস (কীভাবে রেজেক্সকে সংকলিত / প্রয়োগ করা হয় তার অভ্যন্তরীণ পার্থক্য রয়েছে) তা হ'ল:
someStr.replace(/^"(.+)"$/,'$1');
আগের মতো ^"
এবং "$
স্ট্রিংয়ের শুরু এবং শেষে ডিলিমিটিং কোটগুলি মেলে এবং এর (.+)
মধ্যে থাকা সমস্ত কিছু মিলে যায় এবং এটি ক্যাপচার করে। আমি এই রেজেক্সটি চেষ্টা করেছি, উপরের দিকের পাশাপাশি (লুকোচুরি দৃ as়তার সাথে) এবং স্বীকার করেছি যে আমার উদ্বৃত্তে এইটিকে কিছুটা ধীর করে পেয়েছে। আমার ধারণাটি হ'ল দৃষ্টিকোণ দৃ .় বক্তব্য ইঞ্জিনটি নির্ধারণ "
করার সাথে সাথে স্ট্রিংয়ের শেষে নেই বলেই পূর্বের অভিব্যক্তিটি ব্যর্থ হয়ে যায়। আহ্ ভাল, তবে এটি যদি আপনার প্রয়োজন / প্রয়োজন হয় তবে দয়া করে এতে পড়ুন :
তবে, এই শেষ ক্ষেত্রে এটি আরও নিরাপদ, দ্রুত, আরও রক্ষণাবেক্ষণযোগ্য এবং এটি করা আরও ভাল:
if (str.charAt(0) === '"' && str.charAt(str.length -1) === '"')
{
console.log(str.substr(1,str.length -2));
}
এখানে, আমি স্ট্রিংয়ের প্রথম এবং শেষ চরটি ডাবল উদ্ধৃতি কিনা তা যাচাই করছি। যদি তারা হয় তবে আমি সেই প্রথম এবং শেষ অক্ষরগুলি কেটে ফেলারsubstr
জন্য ব্যবহার করছি । স্ট্রিংগুলি শূন্য-সূচকযুক্ত, তাই শেষ চরটি । 2 টি আর্গুমেন্ট প্রত্যাশা করে, যেখানে প্রথমটি অফসেট যেখানে থেকে স্ট্রিং শুরু হয়, দ্বিতীয়টি তার দৈর্ঘ্য। যেহেতু আমরা সর্বশেষ চরটি চাই না, আমরা প্রথমটি চেয়ে এখন আর তার দৈর্ঘ্য । ইজি peazy।charAt(str.length -1)
substr
str.length - 2
টিপস :
বর্ণনামূলক দৃ on় আরোপগুলির আরও এখানে পাওয়া যেতে পারে রেইজেক্সগুলি
খুব কার্যকর (এবং আইএমও মজাদার), প্রথমে কিছুটা বাফেলিং হতে পারে। এখানে আরও কিছু বিশদ, এবং বিষয়গুলির সংস্থানগুলির লিঙ্ক ।
আপনি যদি এখনও মাত্র রেইগেক্স ব্যবহার করে খুব স্বাচ্ছন্দ্য বোধ করেন না তবে আপনি ব্যবহারটি বিবেচনা করতে পারেন:
var noQuotes = someStr.split('"').join('');
যদি স্ট্রিংয়ে প্রচুর উদ্ধৃতি থাকে, তবে এটি রিজেক্স ব্যবহারের চেয়েও দ্রুত হতে পারে