using System.Collections.Generic;
using System.Text.RegularExpressions;
using Synthesis.Entities;
namespace Synthesis.AppCode.Utils
public class FormatUtility
public static int[] GetAccuracyColumns(List<TableColumn> columns)
return columns.Select(x => x.CustomFormat).Select(GetAccuracyFromFormatString).ToArray();
private static int GetAccuracyFromFormatString(string customFormat)
string customFormatToLower = customFormat.ToLower();
if (string.IsNullOrWhiteSpace(customFormatToLower))
var regex = new Regex(@"^{?\d+:(n|p|c)(?<accuracy>\d*)}?$");
if (!regex.IsMatch(customFormatToLower))
if (regex.Match(customFormatToLower).Groups["accuracy"] == null)
var accuracyString = regex.Match(customFormatToLower).Groups["accuracy"].Value;
return int.TryParse(accuracyString, out accuracy) ? accuracy : 2;
public static string GetDataTypesFromFormatString(string customFormat)
string customFormatToLower = customFormat.ToLower();
if (string.IsNullOrWhiteSpace(customFormatToLower))
return ColumnData.DataTypes.dbl.ToString();
var regex = new Regex(@"^{?\d+:(?<format>n|p|c)\d*}?$");
if (!regex.IsMatch(customFormatToLower))
return ColumnData.DataTypes.dbl.ToString();
if (regex.Match(customFormatToLower).Groups["format"] == null)
return ColumnData.DataTypes.dbl.ToString();
var formatString = regex.Match(customFormatToLower).Groups["format"].Value;
return ColumnData.DataTypes.dbl.ToString();
return ColumnData.DataTypes.percent.ToString();
return ColumnData.DataTypes.currency.ToString();
return ColumnData.DataTypes.dbl.ToString();