2017-12-27 512 views
0

我有如下所示的格式图案的复杂的字符串:如何将带有“java方法签名”格式的字符串分解成部分?

(Command)(Parameter_1,Parameter_2,Parameter_3,Parameter_n) 

实施例:PADDING_LEFT(LAST_USE_COUNTER(1450,5),5,0)

欲它们分割如下:

命令:PADDING_LEFT

Parameter_1:LAST_USE_COUNTER(1450,5)

Parameter_2:5

Parameter_3:0

有没有办法来打破这样的字符串?

+0

参数是如何定义的?作为自我定义的模式和文字? – gtgaxiola

+1

你看过使用像Antlr这样的工具http://www.antlr.org –

+0

看看[如何在Java中分割字符串](https://stackoverflow.com/q/3481828)并让我们知道你有什么具体的问题分裂它(应该包括一个[mcve])。 – Dukeling

回答

1

我会走下正则表达式路线。更健壮的方法可能是使用Java语法分析器,如JavaParser

MethodCallExpr bs = 
    (MethodCallExpr) JavaParser.parseExpression 
        ("PADDING_LEFT(LAST_USE_COUNTER(1450,5),5,0)"); 
System.out.println(bs.getName()); 
List<Expression> arguments = bs.getArguments(); 
for (int i = 0; i < arguments.size(); ++i) { 
    System.out.printf("Argument_%d: %s%n", (i + 1), arguments.get(i)); 
} 
相关问题