假设我们有以下字符串:
$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
是正确的。
有人建议如何修复它吗?
您的regexp匹配以$和当前迭代号开头的任何内容。如果你需要用相同的字符串替换所有这些变量,你不需要一个循环,因为你可以简单地这样做:
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;