c# - Regex Pattern for filename like XX_XXXX_XXXX_DDMMYYYY -
i retrieving set of files directory. file names in pattern xx_xxxx_xxxx_ddmmyyyy. xx stands country prefix. valid prefixes in,id,sg,my. next set of xxxx ccms fixed. next set of xxxx vary. have below code optimise.
string[] filepath = directory.getfiles(configurationmanager.appsettings["inputfiles"]); foreach (string inputfilepath in filepath) { try { if ((inputfilepath.toupper().contains("hk_ccms_cardo_") || (inputfilepath.toupper().contains("id_ccms_cardo_")) || (inputfilepath.toupper().contains("in_ccms_cardo_")) || (inputfilepath.toupper().contains("my_ccms_cardo_")) || (inputfilepath.toupper().contains("ph_ccms_cardo_")) || (inputfilepath.toupper().contains("sg_ccms_cardo_")) || (inputfilepath.toupper().contains("th_ccms_cardo_")) || (inputfilepath.toupper().contains("tw_ccms_cardo_")))) { // } } i want replace each inputfilepath.toupper().contains("hk_ccms_cardo_") pattern search fit pattern have given earlier. please help. thanks
not using regular expression, remove redundancy:
var prefixes = new string[]{ "hk_ccms_cardo_", "id_ccms_cardo_", "in_ccms_cardo_", "my_ccms_cardo_", "ph_ccms_cardo_", "sg_ccms_cardo_" }; foreach(string inputfilepath in filepath) { try { if(prefixes.any((string prefix) => inputfilepath.toupper().startswith(prefix))) { // ... } } } if use regex, generate regex string using string.join('|') concatenate pieces , add date part on end, since you're not trying match format number of known prefixes kind of think above clearer.
Comments
Post a Comment