字符串分割后的条件概括

用户1907849

考虑我有一个 cron 表达式为“* * */2 * ”,如果不是“,我必须提取天、小时和分钟的重复我有以下功能也可以使用。

public void CronDivision(string cron)
{
string days, value;
 string[] cronDiv = cron.split(' ');
 if(cronDiv[2] != "*")
 {
  days = "Days"
  value = cronDiv[2].split('/')[1];
 }
 else if(cron[1] != "*)
 {
  //Similar logic
 }
 else if(cron[0] != "*)
 {
  //Similar logic
 }
 else if(cron[3] != "*)
 {
  //different logic for extracting weeks
 }
else if(cron[4] != "*)
 {
  //different logic for extracting years
 }
}

我如何概括上述函数,以便我不想在 cron 表达式的除法之后使用许多带有硬编码数字(如 1、2、3 等)的 if else/switch 语句。

如果没有拆分实际 cron 表达式并提取它的明显解决方案,是否可以使其更具可读性?

阿努维斯旺

根据您认为不会发生多个条件的评论,您可以通过使用 Enum 来避免显式索引。If/Switch case 可以用字典替换,字典将索引(或更好的 Enum)映射到 Actions(需要为每个 case 执行)。

例如,

var cron =  "* * */2 * ";
var arr = cron.Split(new[]{" "},StringSplitOptions.RemoveEmptyEntries);
var value = arr.Select((x,index)=>new {Value=x, Index=index}).First(x=>!x.Value.Equals("*"));
var dictionaryOfActions = new Dictionary<Position,Action>
{
    [Position.Minute] = ()=> ProcessMinute(),
    [Position.Hour] = ()=> ProcessHour(),
    [Position.Day] = ()=> ProcessDay(),
};
dictionaryOfActions[(Position)value.Index]();

其中位置定义为

public enum Position
{
    Minute,
    Hour,
    Day 
}

ProcessMinute、ProcessHour 等表示需要在每个条件下执行的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

条件字符串分割

来自分类Dev

根据多个条件分割字符串

来自分类Dev

获取Java字符串分割后的分割值

来自分类Dev

在特定字符后或最大长度后分割字符串

来自分类Dev

分割字符串

来自分类Dev

分割字符串后在Javascript函数中返回数组

来自分类Dev

如何从split()方法获取分割后的字符串

来自分类Dev

分割字符串后返回TABLE的函数

来自分类Dev

将分割后的字符串存储在数组中

来自分类Dev

分割字符串后在Javascript函数中返回数组

来自分类Dev

分割后重新格式化python字符串

来自分类Dev

固定长度后如何分割字符串数组

来自分类Dev

按两个条件分割字符串-通配符

来自分类Dev

根据某些条件在R中进行字符串分割

来自分类Dev

如何在Java条件分割字符串

来自分类Dev

如何根据scala中的条件分割字符串?

来自分类Dev

按两个条件分割字符串

来自分类Dev

检查分割后的字符串的值是否在下面的字符串中

来自分类Dev

antlr解析字符串并返回分割后的字符串

来自分类Dev

带条件的斜杠后删除字符串

来自分类Dev

使用SED在搜索条件后替换变化的字符串

来自分类Dev

条件字符串

来自分类Dev

复杂的字符串分割

来自分类Dev

用“,”分割字符串

来自分类Dev

基于分割字符串

来自分类Dev

字符串分割头

来自分类Dev

PHP字符串分割

来自分类Dev

在字符串中分割\“

来自分类Dev

HANA:分割字符串?