我有一个字符串如下。
$Alarm:com.Alarm(a == 123 || (count == 12345 || (time matches "24" && pqr =="1")))
$Event:com.Event(b == 123 || (co == 12345 || (time matches "204" && pqr =="22")))
每当我遇到上面的字符串时,我需要生成以下字符串。我的意思是我需要为子字符串"from AlarmStream"
和$Alarm:com.Alarm(...)
附加字符串"from EventStream"
作为子字符串{{1如下所示。
$Event:com.Event(...)
我目前正在使用以下模式在java中实现相同的目标。
$Alarm:com.Alarm(a == 123 || (count == 12345 || (time matches "24" && pqr =="1") )) from AlarmStream
$Event:com.Event(b == 123 || (co == 12345 || (time matches "204" && pqr =="22"))) from EventStream
但我没有得到正确的输出。
请给我一些指示来实现正确的输出。正则表达式应该只考虑最后一个括号,这里左右括号对的数量不固定。它可以增加或减少。所以逻辑应该适用于任何左右括号对的数量。
答案 0 :(得分:2)
为什么在这里需要RegEx。我认为即使这种类型的代码也适合你:
if (str.startsWith("$Alarm:com.Alarm"))
str = str + " from AlarmStream";
else if (str.startsWith("$Event:com.Event"))
str = str + " from EventStream";
答案 1 :(得分:0)
与以前的解决方案类似:
str += str.startsWith("$Alarm:com.Alarm")?" from AlarmStream":str.startsWith("$Event:com.Event")?" from EventStream":"";