using System.Collections.Generic;
using System.Text.RegularExpressions;
private static Dictionary<string, long> numberTable = new Dictionary<string, long>{
{"sıfır",0},{"bir",1},{"iki",2},{"üç",3},{"dört",4},{"beş",5},{"altı",6},
{"yedi",7},{"sekiz",8},{"dokuz",9},{"on",10},{"yirmi",20},{"otuz",30},{"kırk",40},
{"elli",50},{"altmış",60},{"yetmiş",70},{"seksen",80},{"doksan",90},
{"yüz",100},{"bin",1000},{"yüz bin",100000},{"milyon",1000000},
{"milyar",1000000000},{"trilyon",1000000000000},{"katrilyon",1000000000000000},
{"katrilyar",1000000000000000000}
public static long ConvertToNumbers(string numberString)
var numbers = Regex.Matches(numberString, @"\w+").Cast<Match>()
.Select(m => m.Value.ToLowerInvariant())
.Where(v => numberTable.ContainsKey(v))
.Select(v => numberTable[v]);
long acc = 0, total = 0L;
foreach (var n in numbers)
acc = ((acc*n)==0)?acc+1:acc;
acc = ((acc*n)==0)?acc+1:acc;
return (total + acc) * (numberString.StartsWith("eksi",
StringComparison.InvariantCultureIgnoreCase) ? -1 : 1);
public static void Main()
Console.Write("Enter Input Text:");
string userText = Console.ReadLine();
Console.WriteLine(ConvertToNumbers(userText));