0

假设我们有以下字符串:

$6 
$7 

You have received the grade of $3 in the subject $1 ($10) in the semester $2 ($11). 
Grade date: $4 
Entered: $5 

我需要弄清楚如何动态且正确地替换这些变量。假设我们有以下PL/SQL伪代码:

for i in 1..X loop
  l_str := regexp_replace(l_str, '\$'||to_char(i), l_replace(i));
end loop;

但是当涉及到第一次迭代时 - $1, $10,$11变量正在被替换 - 但只是$1正确的。

有没有人建议如何解决它?

4

1 回答 1

1

您的正则表达式匹配以 $ 和当前迭代号开头的任何内容。如果您需要用相同的字符串替换所有这些变量,则不需要循环,因为您可以简单地这样做:

l_str := regexp_replace(l_str, '\$[0-9]+','SOME_STRING');

如果你需要有不同的不同替换,你可以类似地做:

for i in 1..X loop
  l_str := regexp_replace(l_str, '(\$'||to_char(i)||')([^0-9]+|$)',l_replace(i)||'\2');
end loop;
于 2015-12-18T11:14:48.427 回答