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