using System.Collections.Generic;
using System.Globalization;
public static void Main()
Console.WriteLine(IsCurrencyValue("1,000,000 pounds"));
Console.WriteLine(IsCurrencyValue("1,000,000 $"));
Console.WriteLine(IsCurrencyValue("£1,000,000"));
Console.WriteLine(IsCurrencyValue("1,000,000"));
Console.WriteLine(IsCurrencyValue("1,000,000 days"));
private static readonly Dictionary<string, CultureInfo> currencies = new()
{"pound",new CultureInfo("en-GB")}, {"dollar",new CultureInfo("en-US")}, {"euro",new CultureInfo("de-DE")}
public static bool IsCurrencyValue(string s)
if(string.IsNullOrWhiteSpace(s)) return false;
int spaceIndex = s.LastIndexOf(" ");
string token = spaceIndex == -1 ? null : s.Substring(spaceIndex).Trim();
if(token?.All(char.IsLetter) == true)
return currencies.Keys.Any(c => token.StartsWith(c, StringComparison.InvariantCultureIgnoreCase));
return currencies.Values.Any(culture => decimal.TryParse(s, NumberStyles.Currency, culture, out _));