কেন "abcd"। স্টার্টস উইথ ("") সত্য ফিরে আসে?


উত্তর:


164

হ্যাঁ - কারণ এটি খালি স্ট্রিং দিয়ে শুরু হয়। প্রকৃতপক্ষে, খালি স্ট্রিংটি যৌক্তিকভাবে প্রতিটি জোড়া অক্ষরের মধ্যে ঘটে।

এটিকে এভাবে রাখুন: "শুরু হয়" এর কোন সংজ্ঞা আপনি দিতে পারেন যে এটির অবসন্ন হতে পারে? এখানে "দিয়ে শুরু হয়" এর একটি সহজ সংজ্ঞা এখানে দেয় যা না:

"x এর প্রথম y.Lengthঅক্ষর যদি y এর সাথে মেলে তবে x এর সাথে শুরু হবে " "

একটি বিকল্প (সমতুল্য) সংজ্ঞা:

"x যদি y দিয়ে শুরু হয় x.Substring(0, y.Length).Equals(y)"


4
x এর সাথে শুরু হয় x.Substring (0, y.Length)। সমমান (y) এবং কেবল যদি y. দৈর্ঘ্য> 0
ভিঙ্কো ভার্সালোভিক

8
হ্যাঁ, আপনি প্রকৃতপক্ষে স্পষ্টভাবে এই কেস বাদ দিতে পারে। এটি যদিও বেশ অবহেলিত সংজ্ঞা, তাই না?
জন স্কিটি

7
সত্য। এটিও তাদের নন-নাল হওয়া দরকার ... তবে আমি সাধারণ সংজ্ঞাটির চেতনা থেকে দূরে সরে যাওয়ার সময় এই দু'টিই যথার্থতার সাথে যুক্ত হতে চাই :)
জন স্কিেট

8
প্রতিটি জোড় অক্ষরের মধ্যে খালি স্ট্রিংয়ের অসীম ঘটনা ঘটে।
লোটাস নোটস

4
হ্যাঁ, এটি ঠিক একটি সংখ্যার আগে শূন্য রাখার মতো - এটি মান পরিবর্তন করে না তবুও এটি বিদ্যমান।
pop850

47

জন স্কিটি কী বলেছে সে সম্পর্কে আমি বিস্তারিত জানার চেষ্টা করব।

ধরা যাক এক্স, ওয়াই এবং জেডটি স্ট্রিং এবং + অপারেটর প্রকৃতপক্ষে সংমিশ্রণ, তবে:

আমরা যদি z = x + y লিখতে z কে বিভক্ত করতে পারি তবে এর অর্থ z টি x দিয়ে শুরু হবে। কারণ প্রতিটি স্ট্রিং z কে z = "" + z এ বিভক্ত করা যেতে পারে যা প্রতিটি স্ট্রিং "" দিয়ে শুরু হয়।

সুতরাং, কারণ ("" + "abcd") == "abcd" এটি অনুসরণ করে যে "abcd" "" দিয়ে শুরু হয়


18

আমি একটি সম্পর্কিত সত্য যেটি বোঝা সহজ সঙ্গে শুরু করব।

খালি সেটটি প্রতিটি সেটের একটি উপসেট।

কেন? সংজ্ঞা এর উপসেট বলে যে Aএকটি উপসেট হয় Bযদি প্রতিটি উপাদান Aএকজন উপাদান B। বিপরীতভাবে, এর কোনও উপাদান নেই তবে এর Aএকটি উপসেট নয় ।BAB

এখন একটি সেট ঠিক করুন 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 noring স্ট্রিং.এম্পটি.লাইন্থ ইন্ট 32 সূচক satisfying0 <= সূচক <স্ট্রিং.এম্পটি.লেনগি ` অতএব

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;
}

উপরোক্ত দুটি সাহসী ঘটনা খালি সত্য বিবৃতি উদাহরণ । এগুলি সত্য যে সত্য যে সত্য তাদের দ্বারা নির্ধারিত বিবৃতি ( উপসেট এবং শুরু ) খালি মহাবিশ্বের উপর সর্বজনীন পরিমাপ হয়। খালি সেটটিতে কোনও উপাদান নেই, তাই খালি সেটটির কোনও উপাদান অন্য কোনও নির্দিষ্ট সেটে নাও থাকতে পারে। খালি স্ট্রিংয়ে কোনও অক্ষর নেই, সুতরাং খালি স্ট্রিংয়ের কিছু অবস্থান যেমন কোনও অন্য নির্দিষ্ট স্ট্রিংয়ের সাথে একই অবস্থানের সাথে অক্ষরের সাথে মেলে না এমন কোনও অক্ষর থাকতে পারে না।


17

এই পদ্ধতিটি এই স্ট্রিংয়ের শুরুতে স্ট্রিংয়ের সাথে মান প্যারামিটারের সাথে তুলনা করে যা মান হিসাবে একই দৈর্ঘ্য, এবং একটি মান প্রদান করে যা তারা সমান কিনা তা নির্দেশ করে। সমান হতে, মান অবশ্যই একটি খালি স্ট্রিং (খালি) হওয়া উচিত, এই একই উদাহরণের একটি রেফারেন্স, বা এই উদাহরণের সূচনার সাথে মেলে।

.NET স্ট্রিং.স্টার্টস উইথ

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

জাভা স্ট্রিং.স্টার্টস সহ


13

আসুন শুধু "abcd".StartsWith("")রিটার্নকে মিথ্যা বলি ।

যদি তা হয় তবে নীচের ভাবটি সত্য বা মিথ্যাতে কী বোঝায়:

 ("abcd".Substring(0,0) == "")

এটি সত্য হিসাবে প্রমাণিত হয়, সুতরাং স্ট্রিংটি খালি স্ট্রিং ;-) দিয়ে শুরু হয় বা অন্য কথায় বলতে গেলে "abcd" এর সাবস্ট্রিং 0 অবস্থান থেকে শুরু হয় এবং 0 দৈর্ঘ্য থাকা খালি স্ট্রিংয়ের সমান হয় "। বেশ লজিকাল ইমো।


"Abcd" .Susstring (0, 0) একটি খালি স্ট্রিং ফেরত দেওয়ার অর্থ এই নয় যে "abcd" আসলে একটি খালি স্ট্রিং দিয়ে শুরু হয়। ফলাফলটিও 'অপরিজ্ঞাত' হিসাবে ঘোষিত হতে পারে, যেমনটি nullযথাযথভাবে উপযুক্ত ফেরতের মান হত।
টম লিন্ট

@ টমলিন্ট নং আপনি সাধারণত কন্ডিশনগুলি একত্রিত করেন IE x.FirstName.SarttsWith (userEnteredFrstName) && x.LastName.StartsWith (userEnteredLastName) .... এটি প্রবেশ করানো ভ্যালিয়াসগুলির মধ্যে একটিও ফাঁকা স্ট্রিং থাকা সত্ত্বেও শর্তটি কাজ করে।
পপ ক্যাটালিন

7

সি # তে স্পেসিফিকেশনটি এটিকে প্রতিক্রিয়া জানাতে বলে;

সমান হতে, মান অবশ্যই একটি খালি স্ট্রিং (খালি) হওয়া উচিত, এই একই উদাহরণের একটি রেফারেন্স, বা এই উদাহরণের সূচনার সাথে মেলে।


5

দুটি স্ট্রিংয়ের প্রথম এন অক্ষর অভিন্ন। এন দ্বিতীয় স্ট্রিংয়ের দৈর্ঘ্য, অর্থাৎ শূন্য।


5

কেন "abcd"। স্টার্টস উইথ ("") সত্য ফিরে আসে?

বাস্তব উত্তর:

এটি সেভাবে হতে হবে অন্যথায় আপনি কেস যেখানে থাকতেন

    "".startsWith("") == false 
    "".equals("") == true

    but yet

    "a".startsWith("a") == true
    "a".equals("a") == true

এবং তারপরে আমরা আবারও Y2K করব কারণ সমস্ত ব্যাংক সফ্টওয়্যার যা নিজের সাথে শুরু হওয়া সমান স্ট্রিংয়ের উপর নির্ভর করে আমাদের অ্যাকাউন্টগুলি মিশ্রিত হয়ে যাবে এবং হঠাৎ বিল গেটস আমার সম্পদ পাবে এবং আমি তার কাছে পেয়েছি এবং তা জঘন্য! ভাগ্য আমার পক্ষে তেমন দয়ালু নয়।


আমি একমত নই ""। স্টার্টস ("") এর সাথে সত্যটি সমান হওয়া উচিত, কারণ স্ট্রিংগুলি অভিন্ন, এবং কিছু অদ্ভুত ব্যবসায়ের যুক্তির কারণে নয়।
টম লিন্ট

@ টমলিন্ট আপনি আসলে উত্তরের প্রতিবেদনের সাথে একমত হচ্ছেন ...
নিউওনব্লিটজার

4

কেবল রেকর্ডের জন্য, String.StartsWith()অভ্যন্তরীণভাবে পদ্ধতিটিকে কল করে System.Globalization.CultureInfo.IsPrefix()যা নীচের চেকটি স্পষ্ট করে তোলে:

if (prefix.Length == 0)
{
    return true;
}

1

কারণ একটি স্ট্রিং "কিছুই না" দিয়ে শুরু হয়।


4
... স্ট্রিং.এম্পটি যদি কিছুই না হয় তবে তা হয়! এই অতি-সরলকরণ সাধারণকরণ করা যায় না। আমি প্রস্তাব দিই আমরা আরও সেট তত্ত্ব-ভিত্তিক আলোচনা অনুসরণ করি।
পিটা.ও

1

আপনি যদি এটি নিয়মিত প্রকাশের শর্তে ভাবেন তবে তা বোধগম্য। 'খালি স্ট্রিং দিয়ে শুরু হয়' এর নিয়মিত অভিব্যক্তি মূল্যায়নের সময় প্রতিটি স্ট্রিং (কেবল "abcd" নয়, "" এবং "sdf \ nff") সত্য হয় returns

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