কোনও স্ট্রিংয়ের প্রথম পাঁচটি চরিত্র কীভাবে পাবেন


133

স্ট্রিংয়ের প্রথম চর পেতে আমি এই প্রশ্নটি পড়েছি । C # তে স্ট্রিং থেকে প্রথম এন সংখ্যাটির অক্ষর পাওয়ার কোনও উপায় আছে কি?


পূর্ববর্তী প্রশ্নটি char** গুলি সম্পর্কে জিজ্ঞাসা করছে এবং আপনি ** চরিত্রের সম্পর্কে জিজ্ঞাসা করছেন । এগুলো এক জিনিস না. 𣊾এবং 𣇞আমি গতকাল দুটি অক্ষর ব্যবহার করার দরকার ছিল যা সি # তে লেখা সফ্টওয়্যারটিতে ব্যর্থ হয়েছিল যা আমি ব্যবহার করছিলাম কারণ প্রোগ্রামারটি একটি charএবং একটি চরিত্রের মধ্যে পার্থক্য জানত না । এই ফাঁদে পড়বেন না!
হিপ্পিট্রেইল

উত্তর:


218

আপনি গণ্য করতে পারেন। পছন্দ করুন:

char[] array = yourStringVariable.Take(5).ToArray();

অথবা আপনি স্ট্রিং.সুস্ট্রিং ব্যবহার করতে পারেন ।

string str = yourStringVariable.Substring(0,5);

মনে রাখবেন String.Substringস্ট্রিংয়ের দৈর্ঘ্যের ক্ষেত্রে প্রয়োজনীয় অক্ষরের চেয়ে কম ব্যতিক্রম হতে পারে throw

আপনি যদি ফলাফলটি স্ট্রিংয়ে ফিরে পেতে চান তবে আপনি ব্যবহার করতে পারেন:

  • স্ট্রিং কনস্ট্রাক্টর এবং লিনকিউ ব্যবহার করে Take

    string firstFivChar = new string(yourStringVariable.Take(5).ToArray());

পদ্ধতির সাহায্যে প্লাসটি হাতের আগে দৈর্ঘ্যের জন্য যাচাই করে নি।

  • অন্য String.Substringউপায়টি ত্রুটি পরীক্ষা করে ব্যবহার করা

মত:

string firstFivCharWithSubString = 
    !String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
    ? yourStringVariable.Substring(0, 5)
    : yourStringVariable;

3
স্ট্রিং ভাল = নতুন স্ট্রিং (আপনার স্ট্রিংভেরিয়েবল.টেক (6)। টোআর্রে ()); তবে আপনার স্ট্রিংয়েবলের দৈর্ঘ্য 5 এর চেয়ে কম হলে সাবস্ট্রিং ত্রুটি করবে
মোজি

1
IsNullOrWhiteSpaceএখানে ভুল। 10 টি ফাঁকা দিয়ে স্ট্রিংটি বিবেচনা করুন - আপনার কোডটি সমস্ত 10 ফিরে আসবে IsNullOrEmptyinstead পরিবর্তে ব্যবহার করুন। ( IsNullOrWhiteSpaceঅন্য কোনও পরীক্ষার সাথে একত্রিত করা ভাল নয় ; পরিবর্তে নাল + ফাঁকা পরীক্ষার জন্য পরীক্ষা করা হয়, তবে Trimযদি সেই নির্দিষ্ট আচরণটি নির্দিষ্ট করা হয় তবে পরীক্ষা / ক্রিয়াকলাপ যা প্রয়োজন তা করুন do)
টুলমেকারস্টেভ

1
আপনি স্ট্রিং.কনক্যাট () এর মতো ব্যবহার করে ToArray () এ কল সংরক্ষণ করতে পারেন: স্ট্রিং ফার্স্টফাইচার = স্ট্রিং.কনক্যাট (আপনার স্ট্রিংভেরিয়েবল.টেক (5));
ব্লুফিজিথিং


38

আপনি সাবস্ট্রিং (ইন স্টার্টইনডেক্স, ইনট দৈর্ঘ্য) ব্যবহার করতে পারেন

string result = str.Substring(0,5);

সাবস্ট্রিং নির্দিষ্ট বর্ণের অবস্থান থেকে শুরু হয় এবং একটি নির্দিষ্ট দৈর্ঘ্য থাকে has এই পদ্ধতিটি বর্তমান উদাহরণটির মান পরিবর্তন করে না। পরিবর্তে, এটি বর্তমান স্ট্রিংয়ের স্টার্ট ইনডেক্স অবস্থান থেকে শুরু করে দৈর্ঘ্যের অক্ষরগুলির সাথে একটি নতুন স্ট্রিং প্রদান করে, এমএসডিএন

যদি উত্সের স্ট্রিং কম হয় তবে পাঁচটি অক্ষর? উপরের পদ্ধতিটি ব্যবহার করে আপনি ব্যতিক্রম পাবেন। স্ট্রিংয়ে অক্ষরের সংখ্যা 5 এর চেয়ে বেশি কিনা তা পরীক্ষা করার জন্য আমরা শর্ত রাখতে পারি তবে সাবস্ট্রিংয়ের মাধ্যমে প্রথম পাঁচটি পান। দ্রষ্টব্য আমি প্রথম ফিভাইচার ভেরিয়েবলকে উত্সের স্ট্রিং বরাদ্দ করেছি। 5 টির চেয়ে কম অক্ষর হলে ফার্স্টফাইচারটি পরিবর্তিত হবে না, তাই অন্য অংশের প্রয়োজন নেই।

string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
      firstFiveChar = yourStringVariable.Substring(0, 5);

29

কেউ ব্যবহার করার সময় কীভাবে সঠিক চেক করবেন তা উল্লেখ করেনি Substring(), তাই আমি সে সম্পর্কে অবদান রাখতে চেয়েছিলাম।

আপনি যদি ব্যবহার করতে Linqএবং সাথে যেতে না চান তবে আপনাকে Substring()নিশ্চিত করতে হবে যে আপনার স্ট্রিংটি Substring()ফাংশনের দ্বিতীয় প্যারামিটার (দৈর্ঘ্য) এর চেয়ে বড় ।

ধরা যাক আপনার প্রথম 5 টি অক্ষর প্রয়োজন। আপনার এগুলি যথাযথ চেক সহ পাওয়া উচিত:

string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);

// firstFiveChars: "love" (4 characters)

এই চেকটি না করে Substring()ফাংশনটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে কারণ এটি সেখানে নেই এমন অক্ষরের মাধ্যমে পুনরাবৃত্তি করবে।

আমি মনে করি আপনি ধারণা পেয়েছেন ...


মনোরম অতিরিক্ত বিট তথ্য
রব 85

আপনি এটি পছন্দ করেছেন আমি আনন্দিত।
ইল্টার

এটি আমাকে অনেক সাহায্য করেছিল, তবে আপনি কি ব্যাখ্যা করতে পারবেন যে এই লাইনে এটি কি করছে?
জিম্বব

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

Hahhahaha! :) এটি একটি প্রশ্ন যা আমি উত্তর দিয়েছিলাম। আমার কি এই প্রশ্নটি উত্তরহীন রেখে দেওয়া উচিত? :)
ইল্টার

18

সমস্যাটি .Substring(,)হ'ল, আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে প্রদত্ত স্ট্রিংয়ের কমপক্ষে জিজ্ঞাসিত সংখ্যার দৈর্ঘ্য রয়েছে, অন্যথায় একটি ArgumentOutOfRangeExceptionনিক্ষিপ্ত হবে।

সমাধান 1 ('সাবস্ট্রিং' ব্যবহার করে):

var firstFive = stringValue != null ? 
                   stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
                   null;

ব্যবহারের অপূর্ণতা .Substring(হ'ল আপনাকে প্রদত্ত স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করতে হবে।

সমাধান 2 ('নিন' ব্যবহার করে):

var firstFive = stringValue != null ? 
                    string.Join("", stringValue.Take(5)) : 
                    null;

'টেক' ব্যবহার করা আপনাকে প্রদত্ত স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করতে হবে তা প্রতিরোধ করবে।


13

প্যাডরাইট ফাংশনটি স্ট্রিংটি খুব ছোট হওয়া থেকে বিরত রাখতে ব্যবহার করুন, আপনার যা যা প্রয়োজন তা ধরুন এবং তারপরে একটি বিবৃতিতে সমস্ত স্পেসটি শেষ থেকে ট্রিম করুন।

strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();

1
এটি এখন পর্যন্ত আরও ভাল সমাধান। স্ট্রিংয়ের দৈর্ঘ্য সাবস্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম হলে কেবল সাবস্ট্রিং ব্যবহার করা ত্রুটি সৃষ্টি করতে পারে।
অসিরি ডিসানায়াকা


11

কেন কেউ এ কথা উল্লেখ করেছে তা আমি জানি না। তবে এটি অর্জনের এটি সবচেয়ে সংক্ষিপ্ত এবং সহজতম উপায়।

string str = yourString.Remove(n);

n - আপনার প্রয়োজনীয় অক্ষরের সংখ্যা

উদাহরণ

var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141

3
এটি অভ্যন্তরীণভাবে "this.Substring (0, 5)" এর সমান, সুতরাং আপনার স্ট্রিংটির যথাযথ দৈর্ঘ্য রয়েছে তা নিশ্চিত করতে হবে।
পার্সি জ্যাক

আপনি প্রথম এন অক্ষর চান এমন ক্ষেত্রে, আপনি যদি স্ট্রিংয়ের দৈর্ঘ্য জানেন তবে এটি কেবল কাজ করে। দৈর্ঘ্য যদি পরিবর্তন হতে পারে তবে এটি সর্বদা কার্যকর হবে না। আমি জানি এটি সম্ভবত বেশিরভাগের কাছেই সুস্পষ্ট, তবে যে কেউ
যাবেন

10

পাঁচটি শ্বেত স্পেস অক্ষর যুক্ত করুন তারপরে প্রথম পাঁচটি কেটে ফেলুন এবং ফলাফলটি ট্রিম করুন। আপনি যে সংখ্যক স্পেস যুক্ত করেছেন তার সংখ্যার সাথে আপনি কাটছেন match আগে বন্ধনী অন্তর্ভুক্ত করা নিশ্চিত করুন .Substring(0,X)বা আপনি কিছুই সংযোজন করবেন না।

string str = (yourStringVariable + "    ").Substring(0,5).Trim();

এই কৌশলটি দিয়ে আপনাকে ArgumentOutOfRangeExceptionঅন্যান্য উত্তরে উল্লিখিত সম্পর্কে চিন্তা করতে হবে না ।


1
আমি পোস্ট করতে যাচ্ছিলাম! upvoted। (এটি ২০১২, কেন স্ট্রিংয়ে এমন কোনও পদ্ধতি থাকতে পারে না যা ১৯$৫ সালে মিড what যা করেছিল? যারা বলে যে 'আপনারা তা করা উচিত নয়' ঠিক আছে আপনি আমার কোডটি আমার জন্য লিখতে আসবেন ... আপনাকে করতে হবে এটি করুন ...)
ফাস্টআল


6

কেবলমাত্র শীর্ষস্থানীয় সি # 8.0 এ করার জন্য একটি নতুন উপায় রয়েছে: রেঞ্জ অপারেটর

মাইক্রোসফ্ট ডক্স

বা আমি যেমন তাদের বলতে চাই, পান্ডাস টুকরো।

পুরানো উপায়:

string newString = oldstring.Substring(0, 5);

নতুন উপায়:

string newString = oldstring[..5];

যা প্রথম নজরে সংক্ষিপ্ত কোডের জন্য কিছু পাঠযোগ্যতার সুন্দর খারাপ ট্রেড অফের মতো প্রদর্শিত হয় তবে নতুন বৈশিষ্ট্য আপনাকে দেয়

  1. স্লাইসিং অ্যারেগুলির জন্য একটি মানক সিনট্যাক্স (এবং তারপরে স্ট্রিংগুলি)
  2. এই মত দুর্দান্ত জিনিস:

    var স্লাইস 1 = তালিকা [2 .. ^ 3]; // তালিকা [রেঞ্জ। ক্রিয়েট (2, সূচক। ক্রিয়েট ফ্রেমইন্ড (3%))]

    var স্লাইস 2 = তালিকা [.. ^ 3]; // তালিকা [পরিসীমা. টোইন্ড (সূচক। ক্রিয়েট ফ্রেমইন্ড (3))]

    var স্লাইস 3 = তালিকা [2 ..]; // তালিকা [রেঞ্জ। ফ্রমস্টার্ট (2)]

    var স্লাইস 4 = তালিকা [..]; // তালিকা [পরিসীমা। সব]


3

C # তে একটি স্ট্রিং থেকে প্রথম n সংখ্যাটির অক্ষর পেতে

String yourstring="Some Text";  
String first_n_Number_of_Characters=yourstring.Substring(0,n);

2

নীচে একটি এক্সটেনশন পদ্ধতি যা যা স্ট্রিং প্রয়োজনের চেয়ে বড় কিনা তা পরীক্ষা করে এবং স্ট্রিংটিকে সংজ্ঞাযুক্ত সর্বোচ্চ পরিমাণে অক্ষর এবং সংযোজন '...' এর চেয়ে ছোট করে দেয় কিনা তা পরীক্ষা করে।

public static class StringExtensions
{
    public static string Ellipsis(this string s, int charsToDisplay)
    {
        if (!string.IsNullOrWhiteSpace(s))
            return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
        return String.Empty;
    }
}


1

আমি ব্যবহার করি:

var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);

অথবা বিকল্পটি যদি আপনি হোয়াইটস্পেসের জন্যও পরীক্ষা করতে চান তবে (কেবল নালের পরিবর্তে):

var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue

1

অথবা আপনি স্ট্রিং.টোচারার () ব্যবহার করতে পারেন ।
এটি গ্রহণ করে int startindexএবং int lengthপরামিতি হিসাবে এবং a প্রদান করেchar[]

new string(stringValue.ToCharArray(0,5))

আপনার এখনও স্ট্রিংটির যথাযথ দৈর্ঘ্য রয়েছে তা নিশ্চিত করতে হবে অন্যথায় এটি একটি নিক্ষেপ করবে ArgumentOutOfRangeException


1

যখন str 5 এর চেয়ে কম হয় তবে দয়া করে এই কোডটি চেষ্টা করুন।

string strModified = str.Substring(0,str.Length>5?5:str.Length);

0

আমরা যদি কোনও ক্ষেত্র থেকে কেবল প্রথম 5 টি অক্ষর চাই, তবে এটি বাম বৈশিষ্ট্য দ্বারা অর্জন করা যেতে পারে

Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""


-3

আমি উপরের উত্তরগুলি চেষ্টা করেছি এবং আমার মনে হয় এটি সবচেয়ে ভাল

@item.First_Name.Substring(0,1)

এটিতে আমি স্ট্রিংয়ের প্রথম চিঠিটি পেতে পারি

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