aboutsummaryrefslogtreecommitdiff
path: root/src/base/string/replace.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/string/replace.c')
-rw-r--r--src/base/string/replace.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/base/string/replace.c b/src/base/string/replace.c
new file mode 100644
index 0000000..127daed
--- /dev/null
+++ b/src/base/string/replace.c
@@ -0,0 +1,26 @@
+#include "internal.h"
+
+// replace will replace all occurences of the given bytes 'from' to bytes 'to'
+// edits are done in place and modify the string.
+// NOTE: as of now strings from and to must be the same size.
+void
+str·replace(string s, const byte* from, const byte* to)
+{
+ vlong fromL = strlen(from);
+ vlong toL = strlen(to);
+ if (toL != fromL) { panicf("different sized replacement string not supported"); }
+
+ vlong l = str·len(s);
+ vlong i = l;
+ vlong j = l;
+
+ for (i = 0; i < l; i++) {
+ for (j = 0; j < toL; j++) {
+ if (s[i] == from[j]) {
+ s[i] = to[j];
+ break;
+ }
+ }
+ }
+}
+