我有一个保存在2d数组中的字符串集合。
该字符串具有喇叭形的形状,并且完整的字符串可以采用Patient(?x)以及hasdoctor(?x,?y)的形式
如果我写?x = alex和?y = john,那么上面的字符串采用的结构为
患者(alex)
hasdoctor(alex,约翰)
现在的问题是,何时使用下面的代码查找?x,但是在hasdoctor(?x,?y)中跳过?y。
void find_var(String[][] temp)
{
System.out.println(temp.length);
System.out.println(temp[0].length);
for(int i=0;i<temp.length;i++)
for(int j=1;j<temp[0].length-1;j++)
{
String text_to_parse=temp[i][j];
Pattern y = Pattern.compile("[?]\\w[,)]");
Matcher z= y.matcher(text_to_parse);
if(z.find())
{
System.out.println("Found at::"+temp[i][j]);
System.out.println(z.group());
}
else
{
System.out.println("Not found at::"+temp[i][j]);
}
}}
我可以解释我想要在Java中的伪代码是
if([?]\\w[,) is found in array[][])
if([?]\\w[,) is already in other_array[]
Then skip;
else
save [?]\\w[,) to other_array[]
最佳答案
不能说我完全理解您要达到的目标,但我认为问题在于您正在使用
if (z.find()) { /* ... */ }
代替
while (z.find()) { /* ... */ }
使用
if
,该字符串将不会被完全消耗掉,并且在找到第一个匹配项后将返回。