Changed my mind on replace().
It's now replace(str, old, new, maxsplit=0).
Note new ordering of parameters (string first);
this is more consistent with translate().
diff --git a/Lib/string.py b/Lib/string.py
index 8207a8e..99e7275 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -321,18 +321,8 @@
 	return joinfields(L, "")
 
 # Substring replacement (global)
-def replace(old, new, str):
-	return joinfields(splitfields(str, old), new)
-
-# Substring replacement (1st substring only)
-def replace1(old, new, str, i=0, last=None):
-	if last is None:
-		i = find(str, old, i)
-	else:
-		i = find(str, old, i, last)
-	if i >= 0:
-		str = str[:i] + new + str[i+len(old):]
-	return str
+def replace(str, old, new, maxsplit=0):
+	return joinfields(splitfields(str, old, maxsplit), new)
 
 
 # Try importing optional built-in module "strop" -- if it exists,
diff --git a/Lib/stringold.py b/Lib/stringold.py
index 8207a8e..99e7275 100644
--- a/Lib/stringold.py
+++ b/Lib/stringold.py
@@ -321,18 +321,8 @@
 	return joinfields(L, "")
 
 # Substring replacement (global)
-def replace(old, new, str):
-	return joinfields(splitfields(str, old), new)
-
-# Substring replacement (1st substring only)
-def replace1(old, new, str, i=0, last=None):
-	if last is None:
-		i = find(str, old, i)
-	else:
-		i = find(str, old, i, last)
-	if i >= 0:
-		str = str[:i] + new + str[i+len(old):]
-	return str
+def replace(str, old, new, maxsplit=0):
+	return joinfields(splitfields(str, old, maxsplit), new)
 
 
 # Try importing optional built-in module "strop" -- if it exists,