29.04.2016, 04:52
(
Последний раз редактировалось Crayder; 29.04.2016 в 06:06.
)
String splitting by length, strexpand.
This function splits a given string into equal parts. The results are stored in a given multi-dimensional array. Each part will be exactly the preferred length or less (less only if it's the last string or the first if the first is short).
There is also a parameter called 'outstart'. This parameter allows for the resulting strings to begin with a set of characters and remain at the given length.
Example script:
Output:
This could be further improved, like ending the lines at the last space so words aren't broken. Or even 'outend', to append text to the end of the lines like 'outstart' does the beginning.
This function splits a given string into equal parts. The results are stored in a given multi-dimensional array. Each part will be exactly the preferred length or less (less only if it's the last string or the first if the first is short).
There is also a parameter called 'outstart'. This parameter allows for the resulting strings to begin with a set of characters and remain at the given length.
pawn Код:
// Returns
// -1 : Only one string
// 1 : 100% Success
strexpand(input[], output[][], maxstrings = sizeof(output), maxlength = sizeof(output[]), outstart[] = "") {
new appendlen = maxlength - strlen(outstart) - 1;
strmid(output[0], input, 0, maxlength, maxlength);
strdel(input, 0, maxlength - 1);
if(strlen(input) < maxlength)
return -1;
new curstring = 1;
do {
strmid(output[curstring], input, 0, appendlen, maxlength);
strins(output[curstring], outstart, 0, maxlength);
strdel(input, 0, appendlen);
curstring += 1;
} while(strlen(input) && curstring < maxstrings);
return 1;
}
pawn Код:
#include a_samp
new longpart[8][64 + 1] = {
"darCCeaadraCyryreCedaaCaereeCyr3ereyderadyaCrredeerCerdryryCrre3",
"rydrdreCdaaCraydeyCdrayrydCreda3rCerryCradCryrerrrdyrrdCerdraye3",
"eCeaydrCrrararrarrCCayrCrydrdyC3CeadrdrCeedaedryrCearCdaCeCarea3",
"rarrdyraardeaaderdraaerCyyerdry3yrdeeCCrdrdrrrrCyyaCrerCeryCdrr3",
"yrryryererrCCaCrrredrCrryadeeyr3eaeyerrraeyrdCyarCeraeyadraayrd3",
"rdddCyreyCyeCarerryCCayadydCrey3aayeraCyrrrarrreraCCdyrdCrrerer3",
"CryeardrrrarryrraddreeryaaraadC3CyyrdderadyddayryraarrdarrrCedy3",
"eyryCededayyrddarddeayryyrCdera3darrrdrraaaerdrrCryCedCrdaeaeCr3"
};
main() {
new longstr[1024 + 1];
strcat(longstr, longpart[0]);
strcat(longstr, longpart[1]);
strcat(longstr, longpart[2]);
strcat(longstr, longpart[3]);
strcat(longstr, longpart[4]);
strcat(longstr, longpart[5]);
strcat(longstr, longpart[6]);
strcat(longstr, longpart[7]);
// Notice I accounted for a null terminator.
new output[32][32 + 1];
strexpand(longstr, output, .outstart = " ");
for(new i; i < sizeof(output); i++) {
if(strlen(output[i]))
printf("%s", output[i]);
}
}
Код:
darCCeaadraCyryreCedaaCaereeCyr3
ereyderadyaCrredeerCerdryryC
rre3rydrdreCdaaCraydeyCdrayr
ydCreda3rCerryCradCryrerrrdy
rrdCerdraye3eCeaydrCrrararra
rrCCayrCrydrdyC3CeadrdrCeeda
edryrCearCdaCeCarea3rarrdyra
ardeaaderdraaerCyyerdry3yrde
eCCrdrdrrrrCyyaCrerCeryCdrr3
yrryryererrCCaCrrredrCrryade
eyr3eaeyerrraeyrdCyarCeraeya
draayrd3rdddCyreyCyeCarerryC
CayadydCrey3aayeraCyrrrarrre
raCCdyrdCrrerer3Cryeardrrrar
ryrraddreeryaaraadC3Cyyrdder
adyddayryraarrdarrrCedy3eyry
CededayyrddarddeayryyrCdera3
darrrdrraaaerdrrCryCedCrdaea
eCr3
