我正在扫描字符串对象数组,每个字符串对象将被分解为一个正则表达式。
当进行增强的 for 循环时,我想知道是否可以将 retval 放入数组中?
例如,如果我有 String regex = new String[3];
其中 regex[0] = "EVEN_BIN_NUM (0|1)*0"
增强的 for 循环可以将我的 String 对象分解为 EVEN_BIN_NUM 和 (0|1)*0
我希望能够将 EVEN_BIN_NUM 放入一个数组中,并将 (0|1)*0 放入另一个数组中。这是我使用字符串对象扫描字符串数组的代码
/*
* Run through each String object and appropriately place them in the kind,
* and explicit.
*/
for (int j = 0; j < regex.length; j++)
{
for (String retval: regex[j].split(" ", 2))
{
System.out.println(retval);
}
}
对于 regex[0].split("", 2) 我得到 EVEN_BIN_NUM 和 (0|1)*0 分别返回。
或者,如果您知道如何以更好的方式解决此问题,请告诉我: EVEN_BIN_NUM (0|1)*0
ODD_BIN_NUM (0|1)*1
PET(猫|狗)
大写字母部分放入“kind”数组中,其余部分放入另一个数组中。
因此,kind 数组将包含三个字符串,另一个数组将包含三个字符串。
希望这不会太令人困惑......
最佳答案
使用 Map 对象来存储信息可能是个好主意,但是,如果您想以数组形式返回分析,则可以返回数组的数组并执行以下操作。
String[] regex = {"EVEN_BIN_NUM (0|1)*0", "ODD_BIN_NUM (0|1)*1", "PET (cat|dog)"} ;
String[][] split = new String[regex.length][];
for(int i = 0; i < regex.length; i++) {
split[i] = regex[i].split(" ", 2);
}
然后您可以按如下方式访问数据
String firstProperty = split[0][0]; //EVEN_BIN_NUM
String firstRegex = split[0][1]; //(0|1)*0
String secondProperty = split[1][0]; //ODD_BIN_NUM
String secondRegex = split[1][1]; //(0|1)*1
等等。
或者使用 map :
Map<String, Pattern> map = new HashMap<>();
for(int i = 0; i < regex.length; i++) {
String[] splitLine = regex[i].split(" ", 2);
map.put(splitLine[0], Pattern.compile(splitLine[1]));
}
这样您的属性将直接映射到您的模式。
例如:
Pattern petPattern = map.get("PET");
关于java - 你能将 Java Retval 放入数组中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25926115/