Java程序中带有4个参数的Oracle INSTR有趣吗? [关闭]
Posted
技术标签:
【中文标题】Java程序中带有4个参数的Oracle INSTR有趣吗? [关闭]【英文标题】:Oracle INSTR fun with 4 parameter in Java Program? [closed] 【发布时间】:2016-03-29 13:20:32 【问题描述】:在甲骨文中:
案例一:
SELECT INSTR('Viveok Srinivoasamoorthy','o',15,1) FROM DUAL;
输出:19
案例 2: 选择 INSTR('Viveok Srinivoasamoorthy','o',15,2) 从双; 输出:20
同理,我需要开发一个有4个参数(字符串、子字符串、start_position和nthoccurrence)的java程序来实现。
这是我尝试过的代码,但在下面的代码中我找不到第 n 次出现:
public static int nthoccur(String str1,String str2,int occurs )
int f_occurance=0;
f_occurance=str1.indexOf(str2, occurs-1)+1;
System.out.println("f_occurance Value------*** "+f_occurance);
return f_occurance;
public static void main(String args[])
int resultinst=nthoccur("Viveok Srinivoasamoorthy","o",15);
System.out.println(resultinst);
输出:
f_occurance Value------*** 19
19
现在我想使用java程序从字符串的第15个位置找到第二个出现的“o”。如何使用 Java 程序实现案例 2?
【问题讨论】:
*** 不是“其他人为您编写代码”服务。请发布您到目前为止编写的代码;并告诉我们你被困在哪里。此处不接受“卡在第 0 步;请帮助开始”。 永远不要通过 cmets 添加更多信息。改为编辑您的问题。请:首先转到帮助中心,并在那里花一些时间了解“好问题”的样子。好问题得到好答案;不好的问题......没那么多。 【参考方案1】:这是一个应该模仿 INSTR 的方法。
评论将帮助您逐步了解它的工作原理:
public static int instr(final String str, final String substring, int position, final int occurrence)
// matches counter
int count = 0;
// index of last match
int indexFound = 0;
// while we haven't reached the desired match count, and we still find another match
while (count != occurrence && (indexFound = str.indexOf(substring, position)) != -1)
// increment match count
count++;
// position the next search index, to the end of the current match
position = indexFound + substring.length();
if (count == occurrence)
// the number of occurrences was matched, return the last match index
return indexFound + 1; // index in Java starts at 0
else
// the number of occurrences was not matched, return 0
return 0;
【讨论】:
非常感谢@Berger,它工作得很好。【参考方案2】:这里还有另一种方法:-1 表示没有发生。
getInstring(String input, String substr, int start, int occurence)
char[] tempstring = input.substring(start).replaceAll(substr, "-").toCharArray();
int occurindex = 0;
int counter = 0;
for (int i = 0; i < tempstring.length; i++)
if (":-".equals(":" + tempstring[i]))
occurindex++;
counter = i;
if (occurindex == occurence)
break;
return counter == 0 ? -1 : counter + start + 1;
【讨论】:
以上是关于Java程序中带有4个参数的Oracle INSTR有趣吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在函数 Oracle PLSQL 中带最高薪水员工 id 的查询?
静默安装weblogic12c提示INST-07319: Oracle 主目录(O) 位置的验证失败。指定的位置已存在, 是非空目录并且不是有效的 Oracle 主目录