检查字符串是否存在大量不同的增量值

Pau*_*aul 4 java string loops

目前我正在检查以下字符串:

if(parseCommand.contains("vlan1") 
|| parseCommand.contains("Fa0/1i") || parseCommand.contains("Fa0/1o") 
|| parseCommand.contains("Fa1/0") || parseCommand.contains("Fa1/1") 
|| parseCommand.contains("Fa1/2") || parseCommand.contains("Fa1/3") 
|| parseCommand.contains("Fa1/4") || parseCommand.contains("Fa1/5") 
|| parseCommand.contains("Fa1/6") || parseCommand.contains("Fa1/7") 
|| parseCommand.contains("Fa1/8") || parseCommand.contains("Fa1/9") 
|| parseCommand.contains("Fa1/11") || parseCommand.contains("Gi0")) 
{
    //do things here                              
}
Run Code Online (Sandbox Code Playgroud)

但是它可能包含vlan1到vlan4094,我必须检查这些.最简单的方法是什么,我是否必须将它全部放在for循环中,增加到4094我猜?

 for (int i = 1; i <= 4094; i++)

    {
     if(parseCommand.contains("vlan"[i]))
    {  
    //do stuff here 
    }
    }

    if(other conditions from above)

    {
    //do same stuff again here
    } 
Run Code Online (Sandbox Code Playgroud)

或者我可以在for循环中坚持所有条件,并在那里做所有事情.这一切看起来都很混乱,是否有一种非混乱的方式呢?

Duk*_*ing 6

我认为这个正则表达式应该这样做:

String parseCommand = "vlan4094";
if (parseCommand.matches(".*?vlan([1-3][0-9]{3}|" +
                                 "[1-9][0-9]{0,2}|" +
                                 "40(9[0-4]|[0-8][0-9])).*"))
   System.out.println("matches");
Run Code Online (Sandbox Code Playgroud)

[1-3][0-9]{3}- 1000-3999
[1-9][0-9]{0,2}- 1-999
9[0-4]- 90-94
[0-8][0-9]- 00-89
40(9[0-4]|[0-8][0-9])- 4000-4094

这样的事情可能更简单:

String parseCommand = "vlan4094";
if (parseCommand.startsWith("vlan"))
{
   int v = Integer.parseInt(parseCommand.substring(4));
   if (v >= 1 && v <= 4094)
      /* do stuff */
}
Run Code Online (Sandbox Code Playgroud)

建议的变化:

更换:

parseCommand.contains("Fa1/0") || parseCommand.contains("Fa1/1") 
|| parseCommand.contains("Fa1/2") || parseCommand.contains("Fa1/3") 
|| parseCommand.contains("Fa1/4") || parseCommand.contains("Fa1/5") 
|| parseCommand.contains("Fa1/6") || parseCommand.contains("Fa1/7") 
|| parseCommand.contains("Fa1/8") || parseCommand.contains("Fa1/9")
Run Code Online (Sandbox Code Playgroud)

parseCommand.matches(".*?Fa1/[0-9].*")
Run Code Online (Sandbox Code Playgroud)