সাবস্ট্রাস্টার এবং সাবস্ট্রিংয়ের মধ্যে পার্থক্য কী?


842

পার্থক্য কি

alert("abc".substr(0,2));

এবং

alert("abc".substring(0,2));

তারা উভয় "আব" আউটপুট বলে মনে হচ্ছে।


13
@ ডেরেক 朕 會 功夫 দ্রষ্টব্য, দেরীতে হিসাবে substring Chrome এ অন্য সকলকে ছাড়িয়ে গেছে
স্টিভেন লু

4
@ ডেরেক মন্তব্যে যুক্ত করা হচ্ছে ... sliceপদ্ধতির বিপরীতে , substringনেতিবাচক প্যারামিটারগুলির সমন্বয় হ্যান্ডেল করে না।
Dzeimsas Zvirblis

1
আমি মনে করি আরও গুরুত্বপূর্ণ প্রশ্ন "জাভাস্ক্রিপ্টের একটি substrপদ্ধতি এবং পদ্ধতি উভয়ই কেন substring"? এটি কি ওভারলোডিংয়ের পছন্দসই পদ্ধতি?
সিঞ্জাই

7
আজকের হিসাবে, substr()এখানে ডক্স পৃষ্ঠার শীর্ষে আপনি কী "সিউডো-অবহেলিত" বলতে পারেন তার বিষয়ে এমডিএন-এর একটি বিশাল লাল সতর্কতা রয়েছে : বিকাশকারী.মোজিলা.আর / মার্কিন-ডকস / ওয়েব / জাভা স্ক্রিপ্ট / রেফারেন্স/… - কারও কাছে কি এই সম্পর্কে আরও তথ্য রয়েছে, উদাহরণস্বরূপ এমন কোনও ব্রাউজার রয়েছে যা substr()ভবিষ্যতে যে কোনও সময়ে প্রকৃতপক্ষে অবচয় করার পরিকল্পনা করছে ? বা স্টিভেন লু যেমন পরামর্শ দিয়েছিলেন, substr()এগিয়ে যাওয়ার ক্ষেত্রে পারফরম্যান্সের অসুবিধাগুলি থাকতে পারে ?
জামেস

উত্তর:


929

পার্থক্যটি দ্বিতীয় যুক্তিতে। দ্বিতীয় আর্গুমেন্টটি substringসূচকটি থামাতে হবে (তবে অন্তর্ভুক্ত নয়), তবে দ্বিতীয় আর্গুমেন্টটি substrপ্রত্যাবর্তনের সর্বোচ্চ দৈর্ঘ্য।

লিঙ্ক?

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


61
ত্রুটির একটি সাধারণ উত্সের মতো শোনাচ্ছে। পার্থক্যটি জেনে রাখা ভাল। এ সম্পর্কে অতিরিক্ত মন্তব্যগুলি এখানে পেয়েছে
2007

3
@ পাওয়েলও যখন আপনি এটিটি স্ট্রিংয়ের শেষে চান (দ্বিতীয় কোনও যুক্তি নেই)
আন্দ্রে চ্যেলা

এটি এতটাই হাস্যকর যে আমি জাভা অ্যাপলেটগুলি বিকাশের দিনগুলি প্রায় মিস করি। ('প্রায়', কারণ আমাদের তখন IE সম্পর্কে চিন্তা করতে হয়েছিল))
মাইকেল শ্যাপার

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

2
যেহেতু এটি এখন পর্যন্ত সর্বাধিক উত্সাহিত উত্তর, এটি সম্ভবত অবহিত হিসাবে অন্তর্ভুক্ত করার জন্য এটি সম্পাদনা করা উচিত String.prototype.substr()... (এটি ইসিএমএ -২2২ স্ট্যান্ডার্ডের এনেক্সেক্স বিতে সংজ্ঞায়িত করা হয়েছে , যার সূচনাতে বলা হয়েছে: "... প্রোগ্রামারদের ব্যবহার বা অনুমান করা উচিত নয়) নতুন ECMAScript কোড লেখার সময় এই বৈশিষ্ট্যগুলি এবং আচরণগুলির অস্তিত্ব… "")
টিএস

309

substring( MDN ) হিসাবে প্যারামিটার লাগে (from, to)
substr( MDN ) হিসাবে প্যারামিটার লাগে (from, length)

আপডেট : এমডিএন substrউত্তরাধিকার বিবেচনা করে ।

alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"

আপনি মনে রাখতে পারেন সূচিগুলি substringলাগে, যেমন আরও একটি স্ট্রিং নিষ্কাশন পদ্ধতি, টুকরো

0 থেকে শুরু করার সময় আপনি যে কোনও পদ্ধতি ব্যবহার করতে পারেন।


140
.substring()সূচক নেয়। আপনি মনে রাখতে পারেন কারণ নামে একমাত্র 'i' রয়েছে। .slice()সূচকগুলিও নেয়।
কল্লিন

10
@ কল্লিন, আমি এবং ইঙ্গিতগুলি সম্পর্কে যে মন্তব্যটি অবশ্যই উত্তরে স্থানান্তরিত করা উচিত!
MyDaftQuestions

35

ইয়তিমা 2975 এর উত্তরে ইঙ্গিত হিসাবে, একটি অতিরিক্ত পার্থক্য রয়েছে:

substr()স্ট্রিংয়ের শেষে থেকে অফসেট হিসাবে নেতিবাচক শুরুর অবস্থান গ্রহণ করে। substring()না.

এমডিএন থেকে :

যদি শুরুটি নেতিবাচক হয় তবে সাবস্ট্রটার () স্ট্রিংয়ের শেষে থেকে এটি একটি অক্ষর সূচক হিসাবে ব্যবহার করে।

কার্যকরী পার্থক্যের সংক্ষিপ্তসার হিসাবে:

substring(begin-offset, end-offset-exclusive)যেখানে সূচনা-অফসেট 0বা আরও বেশি

substr(begin-offset, length) যেখানে সূচনা-অফসেটটি নেতিবাচকও হতে পারে


25

আমি সম্প্রতি যে আরও একটি গোছা এসেছি তা হ'ল আই 8 এ, "abcd".substr(-1)ভ্রান্তভাবে ফিরে আসে "abcd", যেখানে ফায়ারফক্স 3.6 "d"হিসাবে এটি ফিরে আসে । sliceউভয় উপর সঠিকভাবে কাজ করে।

এই বিষয়ে আরও এখানে পাওয়া যাবে


17

মূল পার্থক্য এটি

সাবস্ট্রাস্ট () আপনাকে ফিরে আসার সর্বোচ্চ দৈর্ঘ্য নির্দিষ্ট করতে দেয়

সাবস্ট্রিং () আপনাকে সূচকগুলি নির্দিষ্ট করতে দেয় এবং দ্বিতীয় যুক্তিটি অন্তর্ভুক্ত নয়

সাবস্ট্রিট () এবং সাবস্ট্রিং () এর মধ্যে কিছু অতিরিক্ত সূক্ষ্মতা রয়েছে যেমন সমান তর্ক এবং নেতিবাচক আর্গুমেন্টগুলি পরিচালনা করা। এছাড়াও দ্রষ্টব্য সাবস্ট্রিং () এবং স্লাইস () একই হলেও সবসময় একই থাকে না।

  //*** length vs indices:
    "string".substring(2,4);  // "ri"   (start, end) indices / second value is NOT inclusive
    "string".substr(2,4);     // "ring" (start, length) length is the maximum length to return
    "string".slice(2,4);      // "ri"   (start, end) indices / second value is NOT inclusive

  //*** watch out for substring swap:
    "string".substring(3,2);  // "r"    (swaps the larger and the smaller number)
    "string".substr(3,2);     // "in"
    "string".slice(3,2);      // ""     (just returns "")

  //*** negative second argument:
    "string".substring(2,-4); // "st"   (converts negative numbers to 0, then swaps first and second position)
    "string".substr(2,-4);    // ""
    "string".slice(2,-4);     // ""

  //*** negative first argument:
    "string".substring(-3);   // "string"        
    "string".substr(-3);      // "ing"  (read from end of string)
    "string".slice(-3);       // "ing"        

আপনি এর জন্য দরকারী "নেতিবাচক দ্বিতীয় যুক্তি" মিস করেছেন slice:"string".slice(2,-2); // "ri"
পল

8

পার্থক্যটি দ্বিতীয় প্যারামিটার। তাদের দ্বিতীয় প্যারামিটারগুলি, যদিও উভয় সংখ্যা দুটি পৃথক জিনিস প্রত্যাশা করছে:

দ্বিতীয় প্যারামিটার সাবস্ট্রিং ব্যবহার করার সময় অন্তর্ভুক্ত না করা প্রথম সূচক:

var s = "string";
s.substring(1, 3); // would return 'tr'

var s = "another example";
s.substring(3, 7); // would return 'ther'

সাবস্ট্রার ব্যবহারের সময় দ্বিতীয় প্যারামিটারটি সাবস্ট্রিংয়ের অন্তর্ভুক্ত করার জন্য অক্ষরের সংখ্যা:

var s = "string";
s.substr(1, 3); // would return 'tri'

var s = "another example";
s.substr(3, 7); // would return 'ther ex'

5

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


2
আপনি কি কোনও নির্ভরযোগ্য উত্সকে নির্দেশ করতে পারেন যা অবমূল্যায়নকে নির্দেশ করে substr()? আমি এটি বেশ কয়েকটি লোকের কাছ থেকে পড়েছি, তবে ওয়েবে এমন কোনও তথ্য খুঁজে পাই না যা বিবৃতি সমর্থন করে। এছাড়াও, মোজিলা এটিকে
অবহেলিত

@ ড্যানিয়েলম যতদূর আমার মনে আছে, এই উত্তরটি পোস্ট করার সময় এটি অবহেলা করা হয়েছিল, সম্ভবত নিবন্ধটি পরিবর্তিত হয়েছে এবং এটি এখন অবচয় করা হয়নি (তবে নিশ্চিত নয়) .. তবে এখনও কিছু নিবন্ধ যেমন রবিলে রেকর্ড করা হয়েছে যেমন স্টুট / জাভাস্ক্রিপ্ট / সাবস্ট্রিং- মেথডে.পিএইচপি হ্রাস করা হিসাবে।
সার্ভেন্ট

3
@DanielM String.prototype.substr()সংজ্ঞায়িত করা হয় অ্যানেক্স বি ECMA-262 মান, যার ভূমিকা "... প্রোগ্রামাররা ব্যবহার করুন অথবা এই বৈশিষ্ট্যগুলি এবং ব্যবহারের অস্তিত্ব অনুমান করা উচিত নয় যখন নতুন নাম ECMAScript কোড লেখা ...।": যুক্তরাষ্ট্র
হিজড়া

@ টিএসকে substr()কিছু নথিতে অবচয় হিসাবে উল্লেখ করা হয়েছে।
সার্ভেন্ট

2
এটি আজকের হিসাবে একটি গৃহীত উত্তর হওয়া উচিত। বিকল্প আছে যখন উত্তরাধিকারের ফাংশন ব্যবহার করা ভাল কোডের জন্য বিকল্প নয়। গুগল যেমন এই পৃষ্ঠায় নিয়ে যায় তাই আরও উত্তর দেওয়ার জন্য দয়া করে এই উত্তরটিকে আপভোট করুন।
vbezhenar

4

স্লাইস বনাম সাবস্ট্রাস্ট বনাম সাবস্ট্রিং বনাম [] পদ্ধতিগুলি

এই প্রতিটি জাভাস্ক্রিপ্ট পদ্ধতিতে কার্যকারিতা সুবিধা রয়েছে। সেই অনুযায়ী এই ফাংশন ব্যবহার করুন।


9
লিঙ্কযুক্ত পারফরম্যান্স সুবিধাগুলির অনুসন্ধান হিসাবে যদি এখানে কিছু সংক্ষিপ্ত পাঠ্য অন্তর্ভুক্ত করা হয় তবে এই উত্তরটি আরও ভাল হবে please
2540625

3

সাবস্ট্রিং (): এটিতে 2 টি পরামিতি "শুরু" এবং "শেষ" রয়েছে।

  • প্রারম্ভিক প্যারামিটার প্রয়োজন হয় এবং নিষ্কাশন শুরু করার অবস্থানটি নির্দিষ্ট করে।
  • শেষের প্যারামিটারটি isচ্ছিক এবং সেই অবস্থানটি নির্দিষ্ট করে যেখানে নিষ্কাশনটি শেষ হওয়া উচিত।

যদি শেষ প্যারামিটারটি নির্দিষ্ট না করা থাকে তবে স্ট্রিংয়ের শেষে অবস্থানের শুরু থেকে শুরু করে সমস্ত অক্ষর বের করা হয়।

var str = "Substring Example";
var result = str.substring(0, 10);
alert(result);

Output : Substring

প্রারম্ভিক প্যারামিটারের মান যদি শেষ প্যারামিটারের মানের চেয়ে বেশি হয় তবে এই পদ্ধতিটি দুটি আর্গুমেন্টকে অদলবদল করবে। এর অর্থ শুরুটি শেষ হিসাবে ব্যবহৃত হবে এবং শেষটি শুরু হিসাবে ব্যবহৃত হবে।

var str = "Substring Example";
var result = str.substring(10, 0);
alert(result);

Output : Substring

সাবস্ট্রাস্ট () : এটিতে 2 টি পরামিতি "শুরু" এবং "গণনা" রয়েছে।

  • প্রারম্ভিক প্যারামিটার প্রয়োজন হয় এবং নিষ্কাশন শুরু করার অবস্থানটি নির্দিষ্ট করে।

  • গণনা প্যারামিটার alচ্ছিক এবং নিষ্কাশনের জন্য অক্ষরের সংখ্যা নির্দিষ্ট করে।

var str = "Substr Example";
var result = str.substr(0, 10);
alert(result);


Output : Substr Exa

যদি গণনা প্যারামিটার নির্দিষ্ট না করা থাকে তবে স্ট্রিংয়ের শেষে অবস্থানের শুরু থেকে শুরু করে সমস্ত অক্ষর বের করা হয়। যদি গণনা 0 বা negativeণাত্মক হয় তবে একটি খালি স্ট্রিংটি ফিরে আসবে।

var str = "Substr Example";
var result = str.substr(11);
alert(result);

Output : ple


2

সাবস্ট্রিং (স্টার্টইন্ডেক্স, এন্ডআইডেক্স (অন্তর্ভুক্ত নয়))

সাবস্ট্রাস্ট (স্টার্টইনডেক্স, কত অক্ষর)

const string = 'JavaScript';

console.log('substring(1,2)', string.substring(1,2)); // a
console.log('substr(1,2)', string.substr(1,2)); // av
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.