c# - আলফ - কিভাবে আপনি একটি স্ট্রিং থেকে অ ASCII অক্ষর ফালা করতে পারেন?(সি#মধ্যে)




প্যারিটি বিট কী (8)

Regex জন্য কোন প্রয়োজন নেই। শুধু এনকোডিং ব্যবহার করুন ...

sOutput = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.ASCII.GetBytes(sInput));

কিভাবে আপনি একটি স্ট্রিং থেকে অ ASCII অক্ষর ফালা করতে পারেন? (সি # মধ্যে)


আপনি যদি স্ট্রিপ না করতে চান তবে প্রকৃতপক্ষে ল্যাটিন অ্যাক্সেন্টযুক্ত অক্ষরগুলিতে অক্ষর রূপান্তর করতে , এই প্রশ্নটি দেখুন: আমি কিভাবে 7bit অক্ষরগুলিতে 8bit অক্ষর অনুবাদ করব? (অর্থাৎ Ü থেকে ইউ)


আমি একটি ফাইলের নামতে খারাপ অক্ষর ফিল্টার করার জন্য এই নিয়মিত অভিব্যক্তিটি ব্যবহার করি।

Regex.Replace(directory, "[^a-zA-Z0-9\\:_\- ]", "")

যে সমস্ত অক্ষর ফাইল নাম জন্য অনুমোদিত করা উচিত।


আমি এখানে এসেছি বর্ধিত অ্যাস্সি অক্ষর জন্য একটি সমাধান খুঁজছেন, কিন্তু এটি খুঁজে পেতে পারে নি। আমি সবচেয়ে নিকটতম পাওয়া BZLM এর সমাধান । তবে এটি শুধুমাত্র 127 এর জন্য ASCII কোডের জন্য কাজ করে (সম্ভবত আপনি তার কোডে এনকোডিং প্রকারটি প্রতিস্থাপন করতে পারেন, তবে আমি মনে করি এটি বোঝার জন্য একটু জটিল ছিল। অতএব, এই সংস্করণটি ভাগ করে নেওয়া)। এখানে একটি সমাধান যা বর্ধিত ASCII কোডগুলির জন্য অর্থাত্ 255 পর্যন্ত যা ISO 8859-1 হয়

এটি খুঁজে বের করে এবং অ-আসসি অক্ষর খুঁজে বের করে (255 এর চেয়েও বেশি)

Dim str1 as String= "â, ??î or ôu🕧� n☁i✑💴++$-💯♓!🇪🚑🌚‼⁉4⃣od;/⏬'®;😁☕😁:☝)😁😁///😍[email protected]#"

Dim extendedAscii As Encoding = Encoding.GetEncoding("ISO-8859-1", 
                                                New EncoderReplacementFallback(String.empty),
                                                New DecoderReplacementFallback())

Dim extendedAsciiBytes() As Byte = extendedAscii.GetBytes(str1)

Dim str2 As String = extendedAscii.GetString(extendedAsciiBytes)

console.WriteLine(str2)
'Output : â, ??î or ôu ni++$-!‼⁉4od;/';:)///[email protected]#$%^yz:

এখানে কোডের জন্য একটি কাজ করা উষ্ণতা

প্রয়োজন অনুযায়ী এনকোডিং প্রতিস্থাপন, বিশ্রাম একই থাকা উচিত।


আমি বিশ্বাস করি মন্স ক্যামাস মানে:

parsememo = Regex.Replace(parsememo, @"[^\u0020-\u007E]", string.Empty);

এখানে একটি বিশুদ্ধ .NET সমাধান যা নিয়মিত এক্সপ্রেশন ব্যবহার করে না:

        string inputString = "Räksmörgås";
        string asAscii = Encoding.ASCII.GetString(
            Encoding.Convert(
                Encoding.UTF8,
                Encoding.GetEncoding(
                    Encoding.ASCII.EncodingName,
                    new EncoderReplacementFallback(string.Empty),
                    new DecoderExceptionFallback()
                    ),
                Encoding.UTF8.GetBytes(inputString)
            )
        );

এটা গুরুতর লাগতে পারে, কিন্তু এটা স্বজ্ঞাত হওয়া উচিত। এটি একটি স্ট্রিং রূপান্তর করতে .NET ASCII এনকোডিং ব্যবহার করে। রূপান্তর সময় UTF8 ব্যবহার করা হয় কারণ এটি মূল অক্ষরের যে কোনও প্রতিনিধিত্ব করতে পারে। এটি কোনও এন-এসসিআইআই অক্ষরকে খালি স্ট্রিং রূপান্তর করতে একটি এনকোডার পুনঃস্থাপন ফাল্যাকব্যাক ব্যবহার করে।


Philcruz এর নিয়মিত এক্সপ্রেশন সমাধান দ্বারা অনুপ্রাণিত, আমি একটি বিশুদ্ধ LINQ সমাধান তৈরি করেছি

    public static string PureAscii(this string source, char nil = ' ')
    {
        var min = '\u0000';
        var max = '\u007F';
        return source.Select(c => c < min ? nil : c > max ? nil : c).ToText();
    }

    public static string ToText(this IEnumerable<char> source)
    {
        var buffer = new StringBuilder();
        foreach (var c in source)
            buffer.Append(c);
        return buffer.ToString();
    }

এটি untested কোড।


string s = "søme string";
s = Regex.Replace(s, @"[^\u0000-\u007F]+", string.Empty);





ascii