Selectively replace multiple instances of a character within a string: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 450: | Line 450: | ||
'aABaCD' chg 'bEb' chg 'rrF' chg 'abracadabra' |
'aABaCD' chg 'bEb' chg 'rrF' chg 'abracadabra' |
||
AErBcadCbFD</syntaxhighlight> |
AErBcadCbFD</syntaxhighlight> |
||
=={{header|Java}}== |
|||
{{trans|JavaScript}} |
|||
Here's an example translated from JavaScript. |
|||
<syntaxhighlight lang="java"> |
|||
int findNth(String s, char c, int n) { |
|||
if (n == 1) return s.indexOf(c); |
|||
return s.indexOf(c, findNth(s, c, n - 1) + 1); |
|||
} |
|||
String selectiveReplace(String s, Set... ops) { |
|||
char[] chars = s.toCharArray(); |
|||
for (Set set : ops) |
|||
chars[findNth(s, set.old, set.n)] = set.rep; |
|||
return new String(chars); |
|||
} |
|||
record Set(int n, char old, char rep) { } |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="java"> |
|||
selectiveReplace("abracadabra", |
|||
new Set(1, 'a', 'A'), |
|||
new Set(2, 'a', 'B'), |
|||
new Set(4, 'a', 'C'), |
|||
new Set(5, 'a', 'D'), |
|||
new Set(1, 'b', 'E'), |
|||
new Set(2, 'r', 'F')); |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre>AErBcadCbFD</pre> |
|||
=={{header|JavaScript}}== |
=={{header|JavaScript}}== |