সমস্ত অক্ষর শেষ ড্যাশ ডান পেতে


114

আমার নিম্নলিখিতগুলি রয়েছে:

string test = "9586-202-10072"

আমি কীভাবে সমস্ত অক্ষরকে ফাইনালের ডানদিকে পেতে পারি -তাই 10072. অক্ষরের সংখ্যা সর্বদা শেষ ড্যাশের ডান থেকে আলাদা।

কিভাবে এই কাজ করা যেতে পারে?

উত্তর:


235

আপনি শেষ অবস্থান পেতে পারেন -সঙ্গে str.LastIndexOf('-')। সুতরাং পরবর্তী পদক্ষেপ সুস্পষ্ট:

var result = str.Substring(str.LastIndexOf('-') + 1);

সংশোধন :

ব্রায়ান নীচে যেমন বলেছে, কোনও ড্যাশ ছাড়াই স্ট্রিং এ এটি ব্যবহার করার ফলে একই স্ট্রিংটি ফিরে আসবে।


1
হাইফেনটি সর্বশেষ অক্ষর হওয়া সত্ত্বেও এটি কাজ করে, সেক্ষেত্রে এটি সঠিকভাবে একটি খালি স্ট্রিং দেয়। এটি কেবল তখনই ব্যর্থ হবে যদি হয় strনাল হয় বা এতে কোনও হাইফেন থাকে না। (এমন কোনও ক্ষেত্রে যেখানে হাইফেন নেই এটি ছুঁড়ে না ফেলে; এটি পুরো উত্সের স্ট্রিং ফিরিয়ে দেয়))
— লুক এইচ

@ লুক্ক: মাথা নেওয়ার জন্য ধন্যবাদ আমি চেক করিনি এবং ভুল করে ধরেছিলাম এটি নিক্ষেপ করবে।
— জন

3
ঠিক আছে, LastIndexOfকিছু না পাওয়া গেলে -1 প্রদান করে (এটি নথিভুক্ত আচরণ, সুতরাং এটির উপর নির্ভর করা নিরাপদ)। str.Substring(1-1)এর সমান একটি স্ট্রিং দেয় str। এখানে অবাক হওয়ার কিছু নেই।
— ব্রায়ান

2
@ ব্রায়ান: আমি মনে করি একই তুচ্ছ বিবৃতিতে আমি বেশিরভাগ ভুলের জন্য আমার রেকর্ডটি ভেঙে দিয়েছি। পাঠ: সত্যের পরে কোডটি প্রুফরিড না করে কখনও কিছু লিখবেন না। ধন্যবাদ।
— জন

57

আপনি লিনকিউ ব্যবহার করতে পারেন এবং নিজেকে স্পষ্টভাবে বিশ্লেষণ সংরক্ষণ করতে পারেন:

string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();

Console.WriteLine(lastFragment);

5
এটি সম্ভবত সবচেয়ে বিকাশকারী সময় সাশ্রয় করবে, তবে সাধারণ ক্ষেত্রে নোট করুন যে এই জাতীয় কোডটি অনেক স্ট্রিং বরাদ্দ করবে (সম্ভবত উপরের উদাহরণে চারটি) তাই পারফরম্যান্স-সমালোচনা বিভাগগুলিতে বিবেচিত হতে পারে।
— চার্লস বার্নস


4
YourString.Substring(YourString.LastIndexOf("-"));

4
আপনি যদি শেষে "+ 1" বাদ দেন তবে আউটপুটটিতে স্ট্রিংয়ের সাথে একটি বিশেষ অক্ষর থাকবে।
— মীনা

3

আমি দেখতে পাচ্ছি যে এই পোস্টটি 46,000 বার দেখা হয়েছে। আমি 46,000 দর্শকের মধ্যে অনেকের কাছেই এই প্রশ্নটি জিজ্ঞাসা করব কেবল কারণ তারা কেবল ফাইলের নাম চায় ... এবং যদি আপনি চিহ্নটি ব্যবহার করে আপনার স্ট্রিং শব্দটি না করে থাকেন তবে এই উত্তরগুলি খরগোশের ছিদ্র হতে পারে।

আপনি যদি কেবল ফাইলটির নাম পেতে চান তবে একটি সাধারণ উত্তর রয়েছে যা এখানে উল্লেখ করা উচিত। এমনকি যদি এটি প্রশ্নের সুনির্দিষ্ট উত্তর না হয়।

result = Path.GetFileName(fileName);

দেখতে https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx




1
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");

if (indexOfHyphen >= 0)
{
    string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
    Console.WriteLine(contentAfterLastHyphen );
}

0

আমি এটির জন্য একটি স্ট্রিং এক্সটেনশন তৈরি করেছি, আশা করি এটি সহায়তা করবে।

public static string GetStringAfterChar(this string value, char substring)
    {
        if (!string.IsNullOrWhiteSpace(value))
        {
            var index = value.LastIndexOf(substring);
            return index > 0 ? value.Substring(index + 1) : value;
        }

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