আমি একটি স্ট্রিং থেকে ডাবল উদ্ধৃতি মুছে ফেলতে চাই


238

আমি ""একটি স্ট্রিংয়ের চারপাশে সরাতে চাই ।

উদাহরণস্বরূপ যদি স্ট্রিং হয়: "I am here"তবে আমি কেবল আউটপুট করতে চাই I am here


4
আপনি কেবল স্ট্রিং.রেপ্লেস ('' ',' ') কেন ব্যবহার করবেন না
আদর্শ কুমার

69
str = str.replace(/"/g,"");
মিঃগ্রিন

11
আপনি কি সমস্ত উদ্ধৃতি বা সীমানা উদ্ধৃতিগুলি মুছতে চান?
কোস

36
stackoverflow.com/q/19155566/989121 । আপনি কি প্রতিটি ASCII চরিত্রের জন্য একবার 255 টি প্রশ্ন জিজ্ঞাসা করতে যাচ্ছেন?
জর্জি

6
str = str.replace(/^"|"$/g, '');সীমানা কোট প্রতিস্থাপন করে। মিঃগ্রিনের উত্তর বিশ্বব্যাপী সমস্ত কিছু প্রতিস্থাপন করবে "যা ভাল নয়
কলব ক্যানিয়ন

উত্তর:


387

ধরে নেওয়া যাক:

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)substrstr.length - 2

টিপস :

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

var noQuotes = someStr.split('"').join('');

যদি স্ট্রিংয়ে প্রচুর উদ্ধৃতি থাকে, তবে এটি রিজেক্স ব্যবহারের চেয়েও দ্রুত হতে পারে


1
@ অরিড: আমি সম্পাদনা করেছি, এক্সপ্রেশনটি কী করে এবং কীভাবে এটি অনুকূলিতকরণ করতে হয় তাতে কিছুটা ব্যয় করে
এলিয়াস ভ্যান ওটেজেম

83
str = str.replace(/^"(.*)"$/, '$1');

এই regexp কেবল স্ট্রিংয়ের প্রথম এবং শেষ অক্ষর হলে উদ্ধৃতিগুলি সরিয়ে ফেলবে। F.ex:

"I am here"  => I am here (replaced)
I "am" here  => I "am" here (untouched)
I am here"   => I am here" (untouched)

63

আপনি যদি মুছে ফেলতে চান তবে স্ট্রিংয়ের শুরুতে ও শেষে একটি উক্তি (বা অন্য কোনও একক চরিত্র) থাকার নিশ্চয়তা থাকলে:

str = str.slice(1, -1);

slice একটি নিয়মিত অভিব্যক্তি চেয়ে অনেক কম ওভারহেড আছে।


8
ডাউনভোটস কেন? '"আমি এখানে আছি" "। স্লাইস (1, -1) ->' আমি এখানে আছি '!
দারিন্ম

2
আপনি আরডিএফ ল্যাটারালগুলি নিয়ে কাজ করছেন তবে ঠিক এমন ধরণের 'কুইক' অপারেশনটি আপনার প্রয়োজন হওয়ায় অবাক করে দেওয়া হয়েছে (এন 3 এ, উদাহরণস্বরূপ, ইউআরআইগুলি সাধারণত পছন্দ মতো <uri>এবং আক্ষরিক মতো "literal")। সুতরাং এখানে একটি upvote। ;)
মার্ক বীরবেক

2
(বিশেষত কারণ মূল প্রশ্নটি বলে যে তারা একটি স্ট্রিংয়ের চারপাশে উদ্ধৃতিগুলি সরাতে চায় ))
মার্ক বীরবেক

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি যা চাওয়া হয়েছিল ঠিক তেমন করে এবং কার্যকরভাবে তা করে।
পাসকেল

38

আপনার যদি আপনার ডেটার উপর নিয়ন্ত্রণ থাকে এবং আপনি জানেন যে আপনার ডাবল উদ্ধৃতিগুলি স্ট্রিংকে ঘিরে রয়েছে (সুতরাং স্ট্রিংয়ের অভ্যন্তরে উপস্থিত হবে না) এবং স্ট্রিংটি একটি পূর্ণসংখ্যা ... এর সাথে বলুন:

"20151212211647278"

বা অনুরূপ এটি সুন্দরভাবে পার্শ্ববর্তী উক্তিগুলি সরিয়ে দেয়

JSON.parse("20151212211647278");

সর্বজনীন উত্তর নয় তবে কুলুঙ্গি প্রয়োজনের জন্য স্নিগ্ধ


এটি এর সাথে ফায়ারফক্সে ত্রুটি ঘটবে: সিনট্যাক্সেরর: জেএসওএন.পারস: জেএসওএন ডেটার 1 কলাম 1 লাইনে অপ্রত্যাশিত চরিত্র
বেন প্রিটোরিয়াস

না ... ফায়ারফক্সের বর্তমান তাজা মুক্তির জন্য ঠিক কাজ করে
স্কট স্টেনসল্যান্ড 15

JSON.parse ( "{123123}"); এটি আপনার উত্তরটি উড়িয়ে দেবে
অভিজিৎ

3
JSON.parse("20151212211647278dfvs"); SyntaxError: Unexpected token d in JSON at position 17
সিস্টেমে রিবুটার

1
আমি একটি ত্রুটি পেয়েছি
সিন্ট্যাক্স এরির

16

আপনি যদি কেবল সীমানা উদ্ধৃতিগুলি সরাতে চান:

function stripquotes(a) {
    if (a.charAt(0) === '"' && a.charAt(a.length-1) === '"') {
        return a.substr(1, a.length-2);
    }
    return a;
}

এই পদ্ধতির মতো দেখতে যদি স্ট্রিংটিকে স্পর্শ করবে না "text in quotes"


2
a.charAt(x)আপনি যদি <ইসিএমএ 5 সমর্থন (f.ex আইই 7) চান তবে ব্যবহার করুন ।
ডেভিড হেলসিং

8

আপনি যদি কেবলমাত্র শুরু বা শেষ থেকে উদ্ধৃতিগুলি সরাতে চান তবে নিম্নলিখিত নিয়মিত প্রকাশটি ব্যবহার করুন:

'"Hello"'.replace(/(^"|"$)/g, '');

1
নোট এটি পরিবর্তন "fooএবং foo"। একজন কেবল এগুলির পুরো জোড়া ফেলে দিতে চাইবেন।
কোস

নোটটির জন্য ধন্যবাদ, আমি ভেবেছিলাম এটি একটি প্রত্যাশিত আচরণ, যদিও।
ডেনিস

5

আপনার সমস্যাটিকে এমনভাবে পুনরুদ্ধার করতে যা নিয়মিত প্রকাশ হিসাবে প্রকাশ করা সহজ:

শূন্য বা একটি শীর্ষস্থানীয় ডাবল-কোট এবং শূন্য বা একটি পিছনে ডাবল-কোটের মধ্যে থাকা অক্ষরের স্ট্রিংগুলি পান।

এখানে যে রিজেক্সট এটি করে:

  var regexp = /^"?(.+?)"?$/;
  var newStr = str.replace(/^"?(.+?)"?$/,'$1');

রেজিপ্সকে ভেঙে ফেলা হচ্ছে:

  • ^"? শূন্যের জন্য একটি লোভী ম্যাচ বা একটি শীর্ষস্থানীয় ডাবল-কোট
  • "?$ শূন্যের জন্য একটি লোভী ম্যাচ বা একটি পিছনে ডাবল-কোট
  • ঐ দুই bookend সব অন্যান্য অক্ষরের একটি অ লোভী ক্যাপচার, (.+?), যেমন লক্ষ্য থাকতে হবে যা $1

এটি এর delimited "string" hereজন্য ফিরে আসবে :

str = "delimited "string" here"  // ...
str = '"delimited "string" here"' // ...
str = 'delimited "string" here"' // ... and
str = '"delimited "string" here'

5

অলস লোকদের জন্য একটি ওয়ান লাইনার

var str = '"a string"';
str = str.replace(/^"|"$/g, '');

এটি সবচেয়ে উপযুক্ত উত্তর। /"/gজন্য কাজ করবে না "My name is \"Jason\""
জেসন লিউ

এই উত্তরটি প্রথম এবং শেষের প্রতিটি উদ্ধৃতি সরিয়ে ফেলবে , যা " - is a quoteস্ট্রিংয়ের ক্ষেত্রে ভাল নয় , সুতরাং এটি চারপাশের
ভ্লাদক্রাস

2

এইটা কাজ করে...

var string1 = "'foo'";
var string2 = '"bar"';

function removeFirstAndLastQuotes(str){
  var firstChar = str.charAt(0);
  var lastChar = str[str.length -1];
  //double quotes
  if(firstChar && lastChar === String.fromCharCode(34)){
    str = str.slice(1, -1);
  }
  //single quotes
  if(firstChar && lastChar === String.fromCharCode(39)){
    str = str.slice(1, -1);
  }
  return str;
}
console.log(removeFirstAndLastQuotes(string1));
console.log(removeFirstAndLastQuotes(string2));


কোড ভুল। খালি স্ট্রিং ইনপুট চেষ্টা করুন 'foo"বা সহজভাবে চেষ্টা করুনfoo"
পাভেল পি

1
var expressionWithoutQuotes = '';
for(var i =0; i<length;i++){
    if(expressionDiv.charAt(i) != '"'){
        expressionWithoutQuotes += expressionDiv.charAt(i);
    }
}

এটি আপনার পক্ষে কাজ করতে পারে।


0

আপনি যদি স্ট্রিংয়ে সমস্ত ডাবল উদ্ধৃতি মুছে ফেলতে চান তবে ব্যবহার করুন

var str = '"some "quoted" string"';
console.log( str.replace(/"/g, '') );
// some quoted string

অন্যথায় আপনি স্ট্রিংয়ের চারপাশে কেবল উদ্ধৃতিগুলি সরাতে চান, ব্যবহার করুন:

var str = '"some "quoted" string"';
console.log( clean = str.replace(/^"|"$/g, '') );
// some "quoted" string

0

ডাবল উদ্ধৃতি দিয়ে ঘেরা স্ট্রিং থেকে ডাবল উদ্ধৃতি উদাহরণস্বরূপ অপসারণ করতে এই সাধারণ কোডটিও কাজ করবে:

var str = 'remove "foo" delimiting double quotes';
console.log(str.replace(/"(.+)"/g, '$1'));

0

আপনি যদি ডাবল উদ্ধৃতিগুলি সরিয়ে দেওয়ার চেষ্টা করছেন তবে নিম্নলিখিত চেষ্টা করুন

  var Stringstr = "\"I am here\"";
  var mystring = String(Stringstr);
  mystring = mystring.substring(1, mystring.length - 1);
  alert(mystring);

0

এই কোডটি পাঠ্যবাক্সে শো সংখ্যাটির জন্য খুব ভাল

$ (এটি) = [আপনার পাঠ্যবক্স]

            var number = $(this).val();
            number = number.replace(/[',]+/g, '');
            number = number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
            $(this).val(number); // "1,234,567,890"

-2

স্ট্রিং থেকে ডাবল উদ্ধৃতি অপসারণের জন্য দয়া করে রেজেক্স অনুসরণ করার চেষ্টা করুন।

    $string = "I am here";
    $string =~ tr/"//d;
    print $string;
    exit();

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