শিরোনাম পুরো প্রশ্ন। কেউ আমাকে কেন এমন কারণ দেবে?
উত্তর:
হ্যাঁ - কারণ এটি খালি স্ট্রিং দিয়ে শুরু হয়। প্রকৃতপক্ষে, খালি স্ট্রিংটি যৌক্তিকভাবে প্রতিটি জোড়া অক্ষরের মধ্যে ঘটে।
এটিকে এভাবে রাখুন: "শুরু হয়" এর কোন সংজ্ঞা আপনি দিতে পারেন যে এটির অবসন্ন হতে পারে? এখানে "দিয়ে শুরু হয়" এর একটি সহজ সংজ্ঞা এখানে দেয় যা না:
"x এর প্রথম y.Length
অক্ষর যদি y এর সাথে মেলে তবে x এর সাথে শুরু হবে " "
একটি বিকল্প (সমতুল্য) সংজ্ঞা:
"x যদি y দিয়ে শুরু হয় x.Substring(0, y.Length).Equals(y)
"
জন স্কিটি কী বলেছে সে সম্পর্কে আমি বিস্তারিত জানার চেষ্টা করব।
ধরা যাক এক্স, ওয়াই এবং জেডটি স্ট্রিং এবং + অপারেটর প্রকৃতপক্ষে সংমিশ্রণ, তবে:
আমরা যদি z = x + y লিখতে z কে বিভক্ত করতে পারি তবে এর অর্থ z টি x দিয়ে শুরু হবে। কারণ প্রতিটি স্ট্রিং z কে z = "" + z এ বিভক্ত করা যেতে পারে যা প্রতিটি স্ট্রিং "" দিয়ে শুরু হয়।
সুতরাং, কারণ ("" + "abcd") == "abcd" এটি অনুসরণ করে যে "abcd" "" দিয়ে শুরু হয়
আমি একটি সম্পর্কিত সত্য যেটি বোঝা সহজ সঙ্গে শুরু করব।
খালি সেটটি প্রতিটি সেটের একটি উপসেট।
কেন? সংজ্ঞা এর উপসেট বলে যে A
একটি উপসেট হয় B
যদি প্রতিটি উপাদান A
একজন উপাদান B
। বিপরীতভাবে, এর কোনও উপাদান নেই তবে এর A
একটি উপসেট নয় ।B
A
B
এখন একটি সেট ঠিক করুন B
। আমি প্রতিষ্ঠিত করব যে খালি সেটটি একটি সাবসেট B
। আমি দেখাচ্ছে এটি ক্ষেত্রে যে ফাঁকা সেট একটি উপসেট নয় নয় করে এই চেষ্টা করবো B
। যদি খালি সেটটির উপসেট না হয় B
তবে আমি খালি সেটটির একটি উপাদান খুঁজে পাই না B
। তবে খালি সেটটিতে কোনও উপাদান নেই এবং এইভাবে আমি কোনও উপাদান খুঁজে পাচ্ছি না যা অন্তর্ভুক্ত নয় B
। অতএব, খালি সেটটি কোনও উপসেট নয় এমনটি নয় B
। সুতরাং, খালি সেটটি অবশ্যই একটি উপসেট হতে হবে B
।
যে কোনও স্ট্রিং খালি স্ট্রিং দিয়ে শুরু হয়।
প্রথমত, আমরা আমাদের সংজ্ঞা সম্মত হতে হবে দিয়ে শুরু হয় । যাক s
এবং t
হতে string
গুলি আমরা যে s
দিয়ে শুরু হয় t
যদি s.Length >= t.Length
প্রথম t.Length
অক্ষর t
ম্যাচের ঐ s
। অর্থাৎ s.Length >= t.Length
প্রতিটি জন্য Int32 index
যেমন যে 0 <= index < t.Length
, s[index] == t[index]
সত্য। বিপরীতে, আমরা বলব যে বিবৃতি s
দিয়ে শুরু হয় নাt
s.Length < t.Length
অথবা s.Length >= t.Length
সেখানে একজন Int32 index
যেমন যে 0 <= index < t.Length
এবংs[index] != t[index]
সত্য. সরল ইংরেজিতে, এর s
চেয়ে খাটো t
, বা যদি না t
হয় তবে একই চরিত্রটিকে একই পজিশনের সাথে না মেলে একটি চরিত্র রয়েছে s
।
এখন একটি স্ট্রিং ঠিক করুন s
। আমি s
এটি খালি স্ট্রিং দিয়ে শুরু করব । আমি এটি দেখিয়ে এটি করব যে এটি s
খালি স্ট্রিং দিয়ে শুরু হয় না। তাহলে s
তারপর খালি স্ট্রিং শুরু হয় না s.Length < String.Empty.Length
বা s.Length >= String.Empty.Length
একটি আছে Int32 index
যেমন যে 0 <= index < String.Empty.Length
। তবে s.Length >= 0
এবং String.Empty.Length
এটি শূন্যের সমান তাই s.Length < String.Empty.Length
সত্য হওয়া অসম্ভব । একইভাবে, যেহেতু ring is equal to zero, there is no
ring স্ট্রিং.এম্পটি.লাইন্থ ইন্ট 32 সূচক satisfying
0 <= সূচক <স্ট্রিং.এম্পটি.লেনগি ` অতএব
s.Length < String.Empty.Length
অথবা s.Length >= String.Empty.Length
সেখানে একজন Int32 index
যেমন যে0 <= index < String.Empty.Length
মিথ্যা। সুতরাং, এটি s
খালি স্ট্রিং দিয়ে শুরু হয় না এমন নয়। সুতরাং, s
খালি স্ট্রিং দিয়ে শুরু করা আবশ্যক।
নিম্নলিখিত একটি বাস্তবায়ন শুরু হয়েছে একটি এক্সটেনশান হিসাবে কোডেড string
।
public static bool DoStartsWith(this string s, string t) {
if (s.Length >= t.Length) {
for (int index = 0; index < t.Length; index++) {
if (s[index] != t[index]) {
return false;
}
}
return true;
}
return false;
}
উপরোক্ত দুটি সাহসী ঘটনা খালি সত্য বিবৃতি উদাহরণ । এগুলি সত্য যে সত্য যে সত্য তাদের দ্বারা নির্ধারিত বিবৃতি ( উপসেট এবং শুরু ) খালি মহাবিশ্বের উপর সর্বজনীন পরিমাপ হয়। খালি সেটটিতে কোনও উপাদান নেই, তাই খালি সেটটির কোনও উপাদান অন্য কোনও নির্দিষ্ট সেটে নাও থাকতে পারে। খালি স্ট্রিংয়ে কোনও অক্ষর নেই, সুতরাং খালি স্ট্রিংয়ের কিছু অবস্থান যেমন কোনও অন্য নির্দিষ্ট স্ট্রিংয়ের সাথে একই অবস্থানের সাথে অক্ষরের সাথে মেলে না এমন কোনও অক্ষর থাকতে পারে না।
এই পদ্ধতিটি এই স্ট্রিংয়ের শুরুতে স্ট্রিংয়ের সাথে মান প্যারামিটারের সাথে তুলনা করে যা মান হিসাবে একই দৈর্ঘ্য, এবং একটি মান প্রদান করে যা তারা সমান কিনা তা নির্দেশ করে। সমান হতে, মান অবশ্যই একটি খালি স্ট্রিং (খালি) হওয়া উচিত, এই একই উদাহরণের একটি রেফারেন্স, বা এই উদাহরণের সূচনার সাথে মেলে।
সত্য যদি আর্গুমেন্ট দ্বারা প্রতিনিধিত্ব করা অক্ষর ক্রম এই স্ট্রিং দ্বারা প্রতিনিধিত্ব করা অক্ষর অনুক্রমের একটি উপসর্গ হয়; অন্যথায় মিথ্যা। এছাড়াও দ্রষ্টব্য যে আর্গুমেন্টটি খালি স্ট্রিং বা সমান (অবজেক্ট) পদ্ধতি দ্বারা নির্ধারিত হিসাবে এই স্ট্রিং অবজেক্টের সমান হলে সত্যটি ফিরে আসবে ।
আসুন শুধু "abcd".StartsWith("")
রিটার্নকে মিথ্যা বলি ।
যদি তা হয় তবে নীচের ভাবটি সত্য বা মিথ্যাতে কী বোঝায়:
("abcd".Substring(0,0) == "")
এটি সত্য হিসাবে প্রমাণিত হয়, সুতরাং স্ট্রিংটি খালি স্ট্রিং ;-) দিয়ে শুরু হয় বা অন্য কথায় বলতে গেলে "abcd" এর সাবস্ট্রিং 0 অবস্থান থেকে শুরু হয় এবং 0 দৈর্ঘ্য থাকা খালি স্ট্রিংয়ের সমান হয় "। বেশ লজিকাল ইমো।
null
যথাযথভাবে উপযুক্ত ফেরতের মান হত।
সি # তে স্পেসিফিকেশনটি এটিকে প্রতিক্রিয়া জানাতে বলে;
সমান হতে, মান অবশ্যই একটি খালি স্ট্রিং (খালি) হওয়া উচিত, এই একই উদাহরণের একটি রেফারেন্স, বা এই উদাহরণের সূচনার সাথে মেলে।
কেন "abcd"। স্টার্টস উইথ ("") সত্য ফিরে আসে?
বাস্তব উত্তর:
এটি সেভাবে হতে হবে অন্যথায় আপনি কেস যেখানে থাকতেন
"".startsWith("") == false
"".equals("") == true
but yet
"a".startsWith("a") == true
"a".equals("a") == true
এবং তারপরে আমরা আবারও Y2K করব কারণ সমস্ত ব্যাংক সফ্টওয়্যার যা নিজের সাথে শুরু হওয়া সমান স্ট্রিংয়ের উপর নির্ভর করে আমাদের অ্যাকাউন্টগুলি মিশ্রিত হয়ে যাবে এবং হঠাৎ বিল গেটস আমার সম্পদ পাবে এবং আমি তার কাছে পেয়েছি এবং তা জঘন্য! ভাগ্য আমার পক্ষে তেমন দয়ালু নয়।
কেবল রেকর্ডের জন্য, String.StartsWith()
অভ্যন্তরীণভাবে পদ্ধতিটিকে কল করে System.Globalization.CultureInfo.IsPrefix()
যা নীচের চেকটি স্পষ্ট করে তোলে:
if (prefix.Length == 0)
{
return true;
}
আপনি যদি এটি নিয়মিত প্রকাশের শর্তে ভাবেন তবে তা বোধগম্য। 'খালি স্ট্রিং দিয়ে শুরু হয়' এর নিয়মিত অভিব্যক্তি মূল্যায়নের সময় প্রতিটি স্ট্রিং (কেবল "abcd" নয়, "" এবং "sdf \ nff") সত্য হয় returns