উত্তর:
string s = "søme string";
s = Regex.Replace(s, @"[^\u0000-\u007F]+", string.Empty);
এখানে একটি খাঁটি। নেট সমাধান যা নিয়মিত প্রকাশ প্রকাশ করে না:
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 ব্যবহার করা হয় কারণ এটি যে কোনও মূল চরিত্রকে উপস্থাপন করতে পারে। এটি কোনও এনএসসিআইআই অক্ষরকে একটি খালি স্ট্রিংয়ে রূপান্তর করতে একটি এনকোর্ডার রিপ্লেসমেন্টফ্যালব্যাক ব্যবহার করে।
আপনি যদি স্ট্রিপটি না চান, তবে লাতিন অ্যাকসেন্টেডকে অ- উচ্চারণযুক্ত অক্ষরে রূপান্তর করতে চান তবে এই প্রশ্নটি একবার দেখুন: আমি 8 বিট অক্ষরগুলিকে কীভাবে 7 বিট অক্ষরে অনুবাদ করব? (অর্থাত্ ইউ থেকে ইউ)
ফিলক্রুজের নিয়মিত অভিব্যক্তি সমাধান দ্বারা অনুপ্রাণিত হয়ে আমি একটি খাঁটি লিনকিউ সমাধান তৈরি করেছি
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();
}
এটি অনির্ধারিত কোড।
return new string( source.Where( c => c >= min && c <= max ).ToArray() );
রেজেক্সের দরকার নেই। শুধু এনকোডিং ব্যবহার করুন ...
sOutput = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.ASCII.GetBytes(sInput));
????nacho??
যখন আমি চেষ্টা করেছি: たまねこnachoなち
মনোতে 3.4
আমি ডাটাবেসের বাইরে মন্তব্য ব্লকগুলি পার্স করার জন্য নিম্নলিখিত সামান্য পরিবর্তিত পরিসীমাটি দরকারী বলে মনে করেছি, এর অর্থ হল যে আপনাকে ট্যাব এবং পাল্টে থাকা অক্ষরগুলির সাথে লড়াই করতে হবে না যার ফলে কোনও সিএসভি ক্ষেত্র বিপর্যস্ত হয়ে উঠবে।
parsememo = Regex.Replace(parsememo, @"[^\u001F-\u007F]", string.Empty);
আপনি যদি অন্য বিশেষ অক্ষর বা নির্দিষ্ট বিরামচিহ্ন এড়াতে চান তবে ascii টেবিলটি চেক করুন
আমি এখানে বর্ধিত আসকি চরিত্রগুলির জন্য একটি সমাধান খুঁজছিলাম, কিন্তু এটি সন্ধান করতে পারেনি। সবচেয়ে কাছের আমি খুঁজে পেয়েছি bzlm এর সমাধান । তবে এটি 127 অবধি কেবল এএসসিআইআই কোডের জন্য কাজ করে (স্পষ্টতই আপনি তার কোডে এনকোডিংয়ের ধরণটি প্রতিস্থাপন করতে পারেন তবে আমি মনে করি এটি বুঝতে কিছু জটিল ছিল Hence সুতরাং, এই সংস্করণটি ভাগ করে নেওয়া)। এখানে এমন একটি সমাধান রয়েছে যা বর্ধিত ASCII কোডগুলির জন্য কাজ করে অর্থাৎ 255 পর্যন্ত যা এটি is আইএসও 8859-1
এটি অ-এস্কি অক্ষরগুলি খুঁজে বের করে এবং সরিয়ে দেয় (255 এর বেশি)
Dim str1 as String= "â, ??î or ôu🕧� n☁i✑💴++$-💯♓!🇪🚑🌚‼⁉4⃣od;/⏬'®;😁☕😁:☝)😁😁///😍1!@#"
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;/';:)///1!@#$%^yz:
কোডটির জন্য এখানে একটি কার্যকারী ফিডল
প্রয়োজন অনুসারে এনকোডিং প্রতিস্থাপন করুন, বিশ্রাম একই থাকবে।
এটি সর্বোত্তম পারফরম্যান্স ভিত্তিক নয়, তবে বেশ সোজা-ফরোয়ার্ড লিনক পদ্ধতির:
string strippedString = new string(
yourString.Where(c => c <= sbyte.MaxValue).ToArray()
);
খারাপ দিকটি হ'ল সমস্ত "বেঁচে থাকা" অক্ষর প্রথমে টাইপের একটি অ্যারেতে স্থাপন করা হয় char[]
যা string
নির্মাণকারী আর ব্যবহার না করার পরে ফেলে দেওয়া হয় ।
আমি এই রেজেক্স এক্সপ্রেশনটি ব্যবহার করেছি:
string s = "søme string";
Regex regex = new Regex(@"[^a-zA-Z0-9\s]", (RegexOptions)0);
return regex.Replace(s, "");
আমি এই নিয়মিত এক্সপ্রেশনটি কোনও ফাইলের মধ্যে খারাপ চরিত্রগুলি ফিল্টার করতে ব্যবহার করি।
Regex.Replace(directory, "[^a-zA-Z0-9\\:_\- ]", "")
এটি ফাইলের নামের জন্য অনুমোদিত সমস্ত অক্ষর হওয়া উচিত।