我想在货币格式数据中找到哪个货币符号。
例如,输入字符串= $ 56.23
public class FormatConverter
{
private CultureInfo _cultureInfo;
public void UpdateCultureInfo()
{
Thread.CurrentThread.CurrentCulture.ClearCachedData();
var thread = new Thread(
s => _cultureInfo = Thread.CurrentThread.CurrentCulture);
thread.Start();
thread.Join();
}
Bool TryParseCurrencySymbolAndValue(string input, out string CurrencySymbol,
out double value)
{
if(_cultureInfo == null)
UpdateCultureInfo();
try{
// Convert Currency data into double
value = Double.Parse(input, NumberStyles.Number | NumberStyles.AllowCurrencySymbol);
// How to extract Currency Symbol?
CurrencySymbol = "$";
return true;
}
catch(Exception ex){ /* Exception Handling */}
return false;
}
}
我想从字符串和56.23中分别提取“$”符号然后我想将CultureInfo应用到56.23到法语格式。输出应为56,23美元。
在某些情况下,输入可能是“欧元符号”或输入字符串开头或结尾的其他货币符号。
我知道如何转换为CurrentCulture for Numeric部分。我不知道如何从字符串中提取货币符号。
答案 0 :(得分:5)
听起来你已经知道如何将字符串解析为数字类型(如果我错了,请纠正我)。您在示例中使用的是double
,我建议decimal
,但这是您的选择。
要获取货币符号,您可以使用简单的正则表达式
Regex ex = new Regex(@"\p{Sc}");
CurrencySymbol = ex.Match(input).Value;
我希望有所帮助。
答案 1 :(得分:1)
请查看此链接,以便了解您可以找到和/或使用IndexOf的许多不同方法 [IndexOf String Examples] [1]
问题是格式是否总是将$作为第一个字符..?如果答案是肯定的 无论USC或外币使用String.IndexOf方法
String.IndexOf("$")
这是一个您可以查看的编码示例
using System;
class Program
{
static void Main()
{
// A.
// The input string.
const string s = "Tom Cruise is an Idiot he should pay $54.95.";
// B.
// Test with IndexOf.
if (s.IndexOf("$") != -1)
{
Console.Write("string contains '$'");
}
Console.ReadLine();
}
}
输出
字符串包含'$'
答案 2 :(得分:-1)
你可以试试吗?
float curSymbol;
bool isValid = float.TryParse(curValue,
NumberStyles.Currency,
CultureInfo.GetCultureInfo("en-US"), out curSymbol);
获取curSymbol。 :)务必使用符号:)
传递货币值