在plsql的一个句子中检索第二个单词到最后一个单词
Posted
技术标签:
【中文标题】在plsql的一个句子中检索第二个单词到最后一个单词【英文标题】:Retrieving second word to last but one word in a sentence in plsql 【发布时间】:2016-04-16 19:33:37 【问题描述】:我编写了一个在 plsql 中正确执行但输出错误的程序。从逻辑上讲,我没有看到代码有任何问题。代码如下:
begin
inpstr := rtrim(ltrim(regexp_replace(inp,'\s2,','')));
lastpos := instr(inpstr,' ',-1);
out3 := SUBSTR(inpstr, INSTR(inpstr,' ',-1) + 1);
pos := instr(inpstr,' ');
out1 := substr(inpstr,1,pos);
out2 := substr(inpstr,pos,lastpos);
end;
O/P:
dbms_output.put_line('First Word:: '||out1||' '||'Second Word:: '||out2||' '||'Lastword:: '||out3);
PROCEDURE SPLITWORDS compiled
anonymous block completed
First Word:: Welcome Second Word:: to the world of analyti Lastword:: analytics!
但是第二个词应该检索到“to the world of”,但它会获取分析。
谁能告诉我我的代码有什么问题。
谢谢, 敏捷。
【问题讨论】:
【参考方案1】:分配out2
时,至少要从lastPos
中减去pos
。
因为您的示例文本中的lastPos
“欢迎来到分析的世界!” 将是 24,pos
将有 8,因此来自 pos 8 的子字符串长度为 24是...对:“到分析世界”
【讨论】:
【参考方案2】:substr
函数的第三个参数是子串的长度,不是结束字符的位置。从lastpos
中减去pos
(见下文)将使您的代码正常工作。
out2 := substr(inpstr, pos, lastpos - pos);
【讨论】:
我希望第一个和最后一个单词之间的所有单词都为 out2 @Dex 哎呀,对不起。我会修正我的答案以上是关于在plsql的一个句子中检索第二个单词到最后一个单词的主要内容,如果未能解决你的问题,请参考以下文章
Search and Replace -freecodecamp算法题目