Posts: 400
Threads: 52
Joined: Apr 2012
Reputation:
0
I have no idea how can i make characters into "*" or "x" something like that :3 can anyone provide a function or an example? for example i type "toiletduck" and it will automatically replace "xxxxxxx" or "********" it depends how many characters contain in a string
Thanks in Advance!
Posts: 2,938
Threads: 162
Joined: May 2010
Usage:
pawn Код:
strreplace(stringVar, "\\n", "\n", true, .maxlength = 1076);
\\n = what you want to replace.
\n = what you are replacing the above with.
true = ignorecase.
Function:
pawn Код:
stock strreplace(string[], const search[], const replacement[], bool:ignorecase = false, pos = 0, limit = -1, maxlength = sizeof(string)) {
// No need to do anything if the limit is 0.
if (limit == 0) return 0;
new
sublen = strlen(search),
replen = strlen(replacement),
bool:packed = ispacked(string),
maxlen = maxlength,
len = strlen(string),
count = 0
;
// "maxlen" holds the max string length (not to be confused with "maxlength", which holds the max. array size).
// Since packed strings hold 4 characters per array slot, we multiply "maxlen" by 4.
if (packed) maxlen *= 4;
// If the length of the substring is 0, we have nothing to look for..
if (!sublen) return 0;
// In this line we both assign the return value from "strfind" to "pos" then check if it's -1.
while (-1 != (pos = strfind(string, search, ignorecase, pos))) {
// Delete the string we found
strdel(string, pos, pos + sublen);
len -= sublen;
// If there's anything to put as replacement, insert it. Make sure there's enough room first.
if (replen && len + replen < maxlen) {
strins(string, replacement, pos, maxlength);
pos += replen;
len += replen;
}
// Is there a limit of number of replacements, if so, did we break it?
if (limit != -1 && ++count >= limit)
break;
}
return count;
}
Credits to slice.