উত্তর:
অনেকগুলি উপায় রয়েছে, তবে এটি করা উচিত (যদিও এটি বড় আকারের স্ট্রিংগুলির সাথে কীভাবে সম্পাদন করে তা জানেন না):
private static string GetNumbers(string input)
{
return new string(input.Where(c => char.IsDigit(c)).ToArray());
}
IsDigit পরিবর্তে ব্যবহার করা উচিত IsNumber: "এই পদ্ধতিটি [ IsNumber] নির্ধারণ করে যে Charকোনওটি কোনও সংখ্যাসূচক ইউনিকোড বিভাগের কিনা । ডিজিটের সাথে সংখ্যার সাথে অক্ষর, ভগ্নাংশ, সাবস্ক্রিপ্টস, সুপারস্প্রিপ্টস, রোমান সংখ্যাসমূহ, মুদ্রার সংখ্যা এবং ঘেরযুক্ত সংখ্যা অন্তর্ভুক্ত রয়েছে This IsDigitপদ্ধতির সাথে বৈসাদৃশ্য , যা নির্ধারণ করে যে Charকোনওটি একটি মূলত -10 সংখ্যার কিনা "" msdn.microsoft.com/en-us/library/yk2b3t2y.aspx
input.Where(c => char.IsDigit(c) || char.IsWhiteSpace(c))
return new string(input.Where(char.IsDigit).ToArray());। আমি কেবল এটিকে আরও পঠনযোগ্য করে
একটি নিয়মিত প্রকাশের জন্য ভাল ফিট মনে হয়।
var s = "40,595 p.a.";
var stripped = Regex.Replace(s, "[^0-9]", "");
"[^0-9]"দ্বারা প্রতিস্থাপন করা যেতে পারে @"\D"তবে আমি এর পাঠযোগ্যতা পছন্দ করি [^0-9]।
একটি এক্সটেনশন পদ্ধতি আরও ভাল পদ্ধতির হবে:
public static string GetNumbers(this string text)
{
text = text ?? string.Empty;
return new string(text.Where(p => char.IsDigit(p)).ToArray());
}
if (text == null) return string.Empty;উপর text = text ?? string.Empty;। এইভাবে আমরা কর্মক্ষমতা হ্রাস করি না।
হয় নিয়মিত এক্সপ্রেশন ব্যবহার করুন যা কেবল 0-9 ক্যাপচার করে এবং বাকিটি ফেলে দেয়। একটি নিয়মিত প্রকাশ একটি অপারেশন যা প্রথমবারের জন্য অনেক বেশি ব্যয় হতে চলেছে। বা এর মতো কিছু করুন:
var sb = new StringBuilder();
var goodChars = "0123456789".ToCharArray();
var input = "40,595";
foreach(var c in input)
{
if(goodChars.IndexOf(c) >= 0)
sb.Append(c);
}
var output = sb.ToString();
এরকম কিছু আমি মনে করি, যদিও আমি সংকলন করি নি ..
লিনকিউ হ'ল ফ্রেড্রিক যেমন বলেছেন, তেমনি একটি বিকল্পও
অন্য বিকল্প ...
private static string RemoveNonNumberDigitsAndCharacters(string text)
{
var numericChars = "0123456789,.".ToCharArray();
return new String(text.Where(c => numericChars.Any(n => n == c)).ToArray());
}
আচ্ছা, আপনি কি জানেন যে অঙ্কগুলি কী: 0123456789, তাই না? আপনার স্ট্রিং চরিত্র অনুসারে অক্ষরকে অতিক্রম করুন; অক্ষরটি যদি একটি অঙ্ক হয় তবে এটি একটি অস্থায়ী স্ট্রিংয়ের শেষের দিকে তাকান, অন্যথায় উপেক্ষা করুন। সি # স্ট্রিংয়ের জন্য উপলব্ধ অন্যান্য সহায়ক পদ্ধতি থাকতে পারে তবে এটি একটি সাধারণ পদ্ধতি যা সর্বত্র কাজ করে works
নিয়মিত এক্সপ্রেশন ব্যবহার করে কোডটি এখানে:
string str = "40,595 p.a.";
StringBuilder convert = new StringBuilder();
string pattern = @"\d+";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(str);
foreach (Match match in matches)
{
convert.Append(match.Groups[0].ToString());
}
int value = Convert.ToInt32(convert.ToString());
গৃহীত উত্তরটি দুর্দান্ত, তবে এটি নুল মানগুলিকে বিবেচনা করে না, সুতরাং বেশিরভাগ পরিস্থিতিতে এটি অকেজো হয়ে যায়।
এটি আমাকে পরিবর্তে এই সহায়ক পদ্ধতিগুলি ব্যবহার করতে চালিত করেছিল। প্রথমটি ওপিকে উত্তর দেয়, অন্যরা যারা বিপরীত সম্পাদনা করতে চায় তাদের জন্য দরকারী হতে পারে:
/// <summary>
/// Strips out non-numeric characters in string, returning only digits
/// ref.: /programming/3977497/stripping-out-non-numeric-characters-in-string
/// </summary>
/// <param name="input">the input string</param>
/// <param name="throwExceptionIfNull">if set to TRUE it will throw an exception if the input string is null, otherwise it will return null as well.</param>
/// <returns>the input string numeric part: for example, if input is "XYZ1234A5U6" it will return "123456"</returns>
public static string GetNumbers(string input, bool throwExceptionIfNull = false)
{
return (input == null && !throwExceptionIfNull)
? input
: new string(input.Where(c => char.IsDigit(c)).ToArray());
}
/// <summary>
/// Strips out numeric and special characters in string, returning only letters
/// </summary>
/// <param name="input">the input string</param>
/// <param name="throwExceptionIfNull">if set to TRUE it will throw an exception if the input string is null, otherwise it will return null as well.</param>
/// <returns>the letters contained within the input string: for example, if input is "XYZ1234A5U6~()" it will return "XYZAU"</returns>
public static string GetLetters(string input, bool throwExceptionIfNull = false)
{
return (input == null && !throwExceptionIfNull)
? input
: new string(input.Where(c => char.IsLetter(c)).ToArray());
}
/// <summary>
/// Strips out any non-numeric/non-digit character in string, returning only letters and numbers
/// </summary>
/// <param name="input">the input string</param>
/// <param name="throwExceptionIfNull">if set to TRUE it will throw an exception if the input string is null, otherwise it will return null as well.</param>
/// <returns>the letters contained within the input string: for example, if input is "XYZ1234A5U6~()" it will return "XYZ1234A5U6"</returns>
public static string GetLettersAndNumbers(string input, bool throwExceptionIfNull = false)
{
return (input == null && !throwExceptionIfNull)
? input
: new string(input.Where(c => char.IsLetterOrDigit(c)).ToArray());
}
অতিরিক্ত তথ্যের জন্য, আমার ব্লগে এই পোস্টটি পড়ুন ।
public static string RemoveNonNumeric(string value) => Regex.Replace(value, "[^0-9]", "");
var output = new string(input.Where(char.IsNumber).ToArray());