Culture nb-NOには、千単位の区切り文字(numbergroupseparator、currencygroupseparatorなど)として ""(スペース)がありますが、"。"と入力することもよくあります。(限目)。小数点記号は「、」です。
何千ものセパレータを割り当てるにはどうすればよいですか?
セパレーターが何であるか、またはリストを知っている場合は、Int.TryParseを使用して、セパレーターを表すさまざまなカルチャを渡します。例えば:
using System.Globalization;
...
string number; // Contains number to parse
int parsedNumber;
List<CultureInfo> cultures = new List<CultureInfo>()
{
Cultureinfo.InvariantCulture,
new CultureInfo("en-US"),
... // Insert other cultures here
};
CultureInfo matchingCulture = cultures.FirstOrDefault(cultureInfo =>
Int.TryParse(number, out parsedNumber,
NumberStyles.AllowThousands, cultureInfo));
if(matchingCulture != null)
{
// parsedNumber contains the parsed number and matchingCulture contains
// the culture that parsed it
}
区切り文字が異なるカルチャで表されていない場合は、単純なstring.Replace()を使用して、既知の区切り文字のリストをコンマなどの単一の既知の区切り文字に置き換えることを検討してください。これには問題がある可能性があることに注意してください。たとえば、一部の国の規則が矛盾しているために、小数点付きで数千の区切り文字が使用されている場合などです。
組み込みのソリューションが見つからない場合は、,
空の文字列などの不要な可能性のある文字をいつでも置き換えてから、数値を解析できます。