DOBON.NETプログラミング道掲示板

■35567 / 2階層)  兆億万表記の文字列を数値に変換できる?
□投稿者/ Azulean 大御所(543回)-(2023/12/17(Sun) 20:57:47)
  • アイコン
    ここまでいけばよいのだろうけど、パターンが難解すぎるので、コピペNGで考えてください。
    パターンの意味を理解できずにコピペすると、説明を求められたときや改良しないと行けなくなったときに詰みます。
    
    自分できちんと理解し、書き直せるぐらいになれば良いです。
    
    
    void Main()
    {
    	String T1 = "11兆200億3400万5円";
    	String T2 = "123兆1695億7万500円";
    	String T3 = "200億3400万5円";
    	String T4 = "123兆7万500円";
    	String T5 = "3400万5円";
    	String T6 = "123兆1695億500円";
    	String T7 = "5円";
    	String T8 = "123兆円";
    	String T9 = "123万";
    	String T10 = "123円";
    	
    	string s1 = T10;
    
    	TestFunc(T1);
    	TestFunc(T2);
    	TestFunc(T3);
    	TestFunc(T4);
    	TestFunc(T5);
    	TestFunc(T6);
    	TestFunc(T7);
    	TestFunc(T8);
    	TestFunc(T9);
    	TestFunc(T10);
    }
    
    private static void TestFunc(string s1)
    {
    	string pattern = @"^(?:(?<兆>\d{1,4})兆)?(?:(?<億>\d{1,4})億)?(?:(?<万>\d{1,4})万)?(?:(?<円>\d{1,4})円?|円)?$";
    	var reg = Regex.Match(s1, pattern);
    
    	var 桁 = new Dictionary<string, long> {
    		["兆"] = 1_0000_0000_0000,
    		["億"] = 1_0000_0000,
    		["万"] = 1_0000,
    		["円"] = 1
    	};
    
    	long 何円 = 0;
    	foreach (var pair in 桁)
    	{
    		if (0 < reg.Groups[pair.Key].Length)
    		{
    			何円 += long.Parse(reg.Groups[pair.Key].Value) * pair.Value;
    		}
    	}
    	Console.WriteLine(String.Format("{1} = {0:#,0}", 何円, s1));
    }
    

違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: 兆億万表記の文字列を数値に変換できる? /Azulean →Re[3]: 兆億万表記の文字列を数値に変換できる? /Wan
 
上記関連ツリー

Nomalアイコン 兆億万表記の文字列を数値に変換できる? / Wan (23/12/17(Sun) 17:15) #35564
Nomalアイコン Re[1]: 兆億万表記の文字列を数値に変換できる? / Azulean (23/12/17(Sun) 20:44) #35566
  └Nomalアイコン 兆億万表記の文字列を数値に変換できる? / Azulean (23/12/17(Sun) 20:57) #35567 ←Now
    └Nomalアイコン Re[3]: 兆億万表記の文字列を数値に変換できる? / Wan (23/12/18(Mon) 08:28) #35569 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -