একটি স্ট্রিং থেকে শেষ অক্ষরটি ছাঁটাই


157

আমার একটা স্ট্রিং আছে

"Hello! world!" 

আমি এটি বের করতে একটি ছাঁটা বা একটি সরু করতে চাই! দুনিয়া বন্ধ কিন্তু হ্যালো বন্ধ।


1
হতে পারে এটি আপনার অনুরোধের বাইরেও কিন্তু আমি আপনাকে প্রস্তাবিত রেজেক্স ব্যবহার করার বিষয়ে ভাবতে কিছুক্ষণ সময় বলতে পারি?
মার্সেলো ফাগা

উত্তর:


298
"Hello! world!".TrimEnd('!');

আরও পড়ুন

সম্পাদনা করুন:

আমি এই ধরণের প্রশ্নগুলিতে কী লক্ষ্য করেছি যে প্রত্যেকেই প্রদত্ত স্ট্রিংয়ের শেষ চরটি সরিয়ে ফেলার পরামর্শ দেয়। তবে এটি ট্রিম পদ্ধতির সংজ্ঞা পূরণ করে না।

ছাঁটাই - এই দৃষ্টান্তের শুরু এবং শেষ থেকে সাদা স্থানের অক্ষরের সমস্ত উপস্থিতি সরিয়ে দেয়।

দুটিই MSDN-ট্রিম

এই সংজ্ঞা অনুসারে শুধুমাত্র শেষ চরিত্রটিকে স্ট্রিং থেকে অপসারণ করা খারাপ সমাধান।

সুতরাং আমরা যদি "স্ট্রিং থেকে শেষ চরিত্রটি ছাঁটাই" করতে চাই তবে আমাদের এ জাতীয় কিছু করা উচিত

এক্সটেনশন পদ্ধতি হিসাবে উদাহরণ:

public static class MyExtensions
{
  public static string TrimLastCharacter(this String str)
  {
     if(String.IsNullOrEmpty(str)){
        return str;
     } else {
        return str.TrimEnd(str[str.Length - 1]);
     }
  }
}

নোট আপনি যদি একই মানের সমস্ত অক্ষর (যেমন !!!!) মুছে ফেলতে চান তবে উপরের পদ্ধতিটি 'এর সমস্ত উপস্থিতি মুছে ফেলে!' স্ট্রিংয়ের শেষে থেকে, তবে আপনি যদি কেবলমাত্র শেষ চরিত্রটি সরাতে চান তবে আপনার এটি ব্যবহার করা উচিত:

else { return str.Remove(str.Length - 1); }

1
স্ট্রিংয়ের শেষে থেকে আপনি কোন চরিত্রটি সরাতে চান তা আপনি যতক্ষণ জানেন সর্বদা এটি আরও ভাল।
নিমরোড শোরি

1
হাই ভ্যাশ, আপনি একটি রেজেক্স ব্যবহার করে আমার সমাধান সম্পর্কে কী ভাবেন? এটি থিকরের অনুরোধটি পূরণ করে এবং এটি 'মুছে ফেলার অনুমতি দেয়!' যে কোনও "বিশ্ব"! এক্সপ্রেশন, যে কোনও জায়গায় এক্সপ্রেশনটি কেবল একটি কোড লাইনে রাখা হয়েছে।
মার্সেলো ফাগা

24
-1 এই সমাধানটি একই সমাপ্তি অক্ষরগুলি সরিয়ে ফেলবে! যেমন এটি "হ্যালো !!!!!!!!" পরিণত হবে "হ্যালো" এ যা শেষ চরিত্রটিকে আরও বেশি সরিয়ে দিচ্ছে।
কুগেল

1
@ কুগেল, আপনার পুরোপুরি অধিকার আছে, আর এই কারণেই আমার উত্তরটি আরও একবার আপনার পড়া উচিত। ব্যাখ্যার জন্য ওপি সর্বশেষ চরিত্রটি কীভাবে সরিয়ে ফেলতে হয় তা জিজ্ঞাসা করবেন না, তবে কীভাবে এটি ছাঁটাবেন।
দামিয়ান লেজস্কিওস্কি - ভ্যাশ

1
@ ভ্যাশ - আপনি কীভাবে একক উদ্ধৃতিটি মুছে ফেলবেন 'পদ্ধতিটি ব্যবহার করে - "হ্যালো! ওয়ার্ল্ড!"। ট্রিমেন্ড ('! ');
বাষ্প

65
String withoutLast = yourString.Substring(0,(yourString.Length - 1));

14
কেবল নিশ্চিত হয়ে নিন যে আপনার স্ট্রিংয়ে কমপক্ষে 1 টি অক্ষর রয়েছে।
নিমরোড শোরি

এছাড়াও নিশ্চিত হয়ে নিন যে আপনার স্ট্রিংটি EG কে মুছতে চান এমন চরিত্রের মধ্যে সর্বদা শেষ হয়: "হ্যালো! ওয়ার্ল্ড" "হ্যালো! ওয়ার্ল" হিসাবে শেষ হবে।
নাথান কোপ

9
if (yourString.Length > 1)
    withoutLast = yourString.Substring(0, yourString.Length - 1);

অথবা

if (yourString.Length > 1)
    withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1);

... যদি আপনি প্রান্ত থেকে কোনও শ্বেতস্থান অক্ষর সরাতে চান তবে।


9
আমি কোনও মন্তব্য ছাড়াই কেবল ডাউনভোটটি অফসেট করতে আপগ্রেড করেছি। লোকেরা যখন এটি করে তখন এটি ঘৃণা করুন।
জেফ রেড্ডি

2
এটি হতে পারে কারণ কোনও TrimEnd()পদ্ধতি নেই এবং যদি এটি থাকে তবে পরবর্তী Substring(..)কলটি সংক্ষিপ্ত স্ট্রিংগুলিতে ব্যর্থ করতে পারে ।
ররি

7
        string s1 = "Hello! world!";
        string s2 = s1.Trim('!');

কিভাবে সম্পত্তি সঙ্গে সম্পত্তি সঙ্গে? এটি কি এখানে ব্যবহার করা যায়?
ব্যবহারকারীএজলজিক অ্যাপসটি

1
ট্রিম () এর এত খারাপ নাম দেওয়া হয়েছে। এটি ট্রিমস্টার্ট () এবং ট্রিমেন্ড ()
অ্যান্টনি বুথ


5
string helloOriginal = "Hello! World!";
string newString = helloOriginal.Substring(0,helloOriginal.LastIndexOf('!'));

5

স্ট্রিং থেকে শেষ চরিত্রটি ছাঁটাই করার আরেকটি উদাহরণ :

string outputText = inputText.Remove(inputText.Length - 1, 1);

আপনি এটিকে একটি এক্সটেনশন পদ্ধতিতে রাখতে পারেন এবং এটিকে নাল স্ট্রিং ইত্যাদি থেকে প্রতিরোধ করতে পারেন



2

আপনি এটি ব্যবহার করতে পারেন:

public static class Extensions
 {

        public static string RemovePrefix(this string o, string prefix)
        {
            if (prefix == null) return o;
            return !o.StartsWith(prefix) ? o : o.Remove(0, prefix.Length);
        }

        public static string RemoveSuffix(this string o, string suffix)
        {
            if(suffix == null) return o;
            return !o.EndsWith(suffix) ? o : o.Remove(o.Length - suffix.Length, suffix.Length);
        }

    }


1

@ ডামিয়ান লেজস্কিজিস্কির সামান্য সংশোধিত সংস্করণ - ভ্যাশ যা নিশ্চিত করবে যে কেবলমাত্র একটি নির্দিষ্ট চরিত্র অপসারণ করা হবে।

public static class StringExtensions
{
    public static string TrimLastCharacter(this string str, char character)
    {
        if (string.IsNullOrEmpty(str) || str[str.Length - 1] != character)
        {
            return str;
        }
        return str.Substring(0, str.Length - 1);
    }
}

0

আমি ট্রিমইন্ড ব্যবহার করে একটি এক্সটেনশন লেখার পথ ধরেছিলাম কারণ আমি ইতিমধ্যে এটি ইনলাইনটি ব্যবহার করছি এবং এতে খুশি হয়েছি ... অর্থাৎ:

static class Extensions
{
        public static string RemoveLastChars(this String text, string suffix)
        {            
            char[] trailingChars = suffix.ToCharArray();

            if (suffix == null) return text;
            return text.TrimEnd(trailingChars);
        }

}

স্থির শ্রেণি ব্যবহার করে আপনার ক্লাসে নাম স্থান অন্তর্ভুক্ত করেছেন তা নিশ্চিত করুন; পি এবং ব্যবহারটি হ'ল:

string _ManagedLocationsOLAP = string.Empty;
_ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(",");          

0

এটি সহজ করার জন্য এক্সটেনশন ক্লাসের একটি উদাহরণ: -

internal static class String
{
    public static string TrimEndsCharacter(this string target, char character) => target?.TrimLeadingCharacter(character).TrimTrailingCharacter(character);
    public static string TrimLeadingCharacter(this string target, char character) => Match(target?.Substring(0, 1), character) ? target.Remove(0,1) : target;
    public static string TrimTrailingCharacter(this string target, char character) => Match(target?.Substring(target.Length - 1, 1), character) ? target.Substring(0, target.Length - 1) : target;

    private static bool Match(string value, char character) => !string.IsNullOrEmpty(value) && value[0] == character;
}

ব্যবহার

"!Something!".TrimLeadingCharacter('X'); // Result '!Something!' (No Change)
"!Something!".TrimTrailingCharacter('S'); // Result '!Something!' (No Change)
"!Something!".TrimEndsCharacter('g'); // Result '!Something!' (No Change)

"!Something!".TrimLeadingCharacter('!'); // Result 'Something!' (1st Character removed)
"!Something!".TrimTrailingCharacter('!'); // Result '!Something' (Last Character removed)
"!Something!".TrimEndsCharacter('!'); // Result 'Something'  (End Characters removed)

"!!Something!!".TrimLeadingCharacter('!'); // Result '!Something!!' (Only 1st instance removed)
"!!Something!!".TrimTrailingCharacter('!'); // Result '!!Something!' (Only Last instance removed)
"!!Something!!".TrimEndsCharacter('!'); // Result '!Something!'  (Only End instances removed)

-5

আপনি যদি 'মুছে ফেলতে চান!' একটি নির্দিষ্ট অভিব্যক্তি থেকে অক্ষর (আপনার ক্ষেত্রে "বিশ্ব"), তারপরে আপনি এই নিয়মিত প্রকাশটি ব্যবহার করতে পারেন

string input = "Hello! world!";

string output = Regex.Replace(input, "(world)!", "$1", RegexOptions.Multiline | RegexOptions.Singleline);

// result: "Hello! world"

$ 1 টি বিশেষ অক্ষরটিতে সমস্ত মিলিত "বিশ্ব" এক্সপ্রেশন রয়েছে এবং এটি মূল "বিশ্বের" প্রতিস্থাপন করতে ব্যবহৃত হয়! অভিব্যক্তি

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