SoyArcano

split large string

7 posts in this topic

#1 ·  Posted (edited)

Hello i want to split one letter large will be this:

Quote

string longtext = "Une population plus nombreuse et plus âgée, des maladies plus fréquentes… En 2020, la France devrait compter 548 000 personnes de plus qu’en 2015 atteintes d’au moins une pathologie chronique ou nécessitant un traitement au long cours (diabète, cancer, maladie psychiatrique…). Cette projection inédite a été dévoilée mercredi 31 mai par la Caisse nationale de l’assurance-maladie des travailleurs salariés (CNAMTS) à l’occasion de la présentation d’une analyse « médicalisée » des dépenses de santé en 2015.

Pour la première fois, les statisticiens de la CNAM ont croisé les prévisions démographiques de l’Insee et les évolutions prévisibles des principales pathologies. L’objectif était d’établir celles qui connaîtront les plus fortes hausses d’effectifs ces prochaines années et ainsi mieux « identifier les leviers de maîtrise de dépenses ». Entre 2015 et 2020, le nombre de personnes atteintes d’une maladie cardio-neuro-vasculaire devrait par exemple grimper de 13 % et passer de 4,5 millions à 5,1 millions de patients, les deux tiers de cette hausse s’expliquant par la seule évolution démographique, soit en l’occurrence le vieillissement de la population.

D’autres pathologies devraient également connaître de fortes hausses de leurs effectifs au cours de cette période : + 12 % pour le diabète (455 000 patients de plus), + 10 % pour les maladies respiratoires chroniques (340 000 patients de plus), + 11 % pour les maladies psychiatriques (100 000 patients de plus), + 20 % pour les maladies inflammatoires (234 000 patients de plus). Des hausses spectaculaires qu’il faut lire avec prudence car les patients qui cumulent plusieurs pathologies sont comptabilisés plusieurs fois. Ayden Tajahmady, le directeur adjoint de la stratégie et des études statistiques à la CNAM, explique :

« Cette progression peut paraître importante mais il n’y a pas d’explosion. C’est la poursuite d’une tendance qui tend même à se ralentir en raison d’une évolution démographique plus modérée. »
L’augmentation du nombre de patients atteints de maladies cardio-neuro-vasculaires ne serait ainsi que de 2,7 % par an jusqu’en 2020, contre 3,3 % chaque année entre 2013 et 2015. Plus exceptionnellement, on assiste même à quelques diminutions d’effectifs. Le nombre de personnes prenant des traitements psychotropes ou des traitements du risque cardio-vasculaire devrait ainsi « reculer respectivement de 8 % et de 6 % ».

Budget contraint

Une évolution du nombre de malades à laquelle l’Assurance-maladie devra répondre avec un budget contraint, ce qui l’oblige, comme elle le détaille chaque année à la fin du mois de juin, à engager des actions de prévention ou de « maîtrise médicalisée » des dépenses (réduction de la durée de séjour à l’hôpital, optimisation de l’utilisation des ambulances, etc.). Emmanuel Macron a annoncé pendant la campagne qu’il entendait plafonner la progression des dépenses à 2,3 % chaque année (contre 2,1 % cette année, et 1,75 % en 2016).

Mercredi, la CNAM n’a pas souhaité chiffrer les dépenses supplémentaires qu’entraîneront nécessairement ces centaines de milliers de nouveaux patients. « Ce calcul aurait été trop hasardeux, chaque pathologie ayant vingt-sept postes de dépense différents », souligne M. Tajahmady, en rappelant qu’il est aujourd’hui impossible de prédire l’évolution du prix de certains traitements médicamenteux.

L’Assurance-maladie s’est toutefois prêtée à cet exercice a posteriori pour certaines maladies. Elle a par exemple constaté une hausse de la dépense moyenne de soins pour le traitement du cancer du sein, passée de 11 288 euros par patiente par an en 2012 à 12 035 euros en 2015. Une augmentation due à un recours croissant à des nouveaux médicaments, plus onéreux.

A contrario, la dépense moyenne annuelle par patient traité pour une maladie coronaire chronique, comme une angine de poitrine, a baissé de 2,7 % entre 2012 et 2015 en raison de la baisse des prix de certains médicaments et une diminution des dépenses d’hospitalisation, « concomitante à une hausse des soins infirmiers en ville »."

and i want to split string so i can put a limit on each sub-string . i mean some way to separate my string using &_ but not using the hands without doing mechanic some way to split x each amount of string example: "Une population plus nombreuse et plus âgée" &_ "the follow text..." ... Some way to do splitting text or other way?

Edited by SoyArcano

Share this post


Link to post
Share on other sites



#3 ·  Posted (edited)

what are your thoughts on this mod, per the OPs needs:

Local $sSplit = _StringEqualSplit_au3("12345678910", 3)
msgbox(0, '' ,$sSplit)

Func _StringEqualSplit_au3($sString, $iNumChars, $var = "sSplit" & $iNumChars & "Var")
    If Not IsString($sString) Or $sString = "" Then Return SetError(1, 0, 0)
    If Not IsInt($iNumChars) Or $iNumChars < 1 Then Return SetError(2, 0, 0)
    Return "$" & $var & " = " & stringtrimright(StringRegExpReplace($sString, "((?s).{1," & $iNumChars & "})", '"' & "$1" & '"' & " & _" & @CR) , 4)
EndFunc

 

And this version with &=

Local $sSplit = _StringEqualSplit_au3("12345678910", 3)
msgbox(0, '' ,$sSplit)

Func _StringEqualSplit_au3($sString, $iNumChars, $var = "sSplit" & $iNumChars & "Var")
If Not IsString($sString) Or $sString = "" Then Return SetError(1, 0, 0)
If Not IsInt($iNumChars) Or $iNumChars < 1 Then Return SetError(2, 0, 0)
Return "$" & $var & " = " & '""' & @CR & StringRegExpReplace($sString, "((?s).{1," & $iNumChars & "})", "$" & $var & " &= " & '"' & "$1" & '"' & @CR)
EndFunc

 

Edited by iamtheky
1 person likes this

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

8 hours ago, iamtheky said:

And this version with &=

I think it's very good. :)

Apart from one thing. You need to account for double quotes occurring within the string. Something like this:

Local $aArray = _StringEqualSplit("12345678910""", 3), _
    $sSplit = "$sSplit", _
    $sCode = $sSplit & " = """"" & @CR

For $i = 0 To UBound($aArray) -1
    $sCode &= $sSplit & " &= """ & StringReplace($aArray[$i], """", """""") & """" & @CR
Next

msgbox(0, '', $sCode)

Func _StringEqualSplit($sString, $iNumChars)
    If Not IsString($sString) Or $sString = "" Then Return SetError(1, 0, 0)
    If Not IsInt($iNumChars) Or $iNumChars < 1 Then Return SetError(2, 0, 0)
    Return StringRegExp($sString, "(?s).{1," & $iNumChars & "}", 3)
EndFunc

There might also be other considerations. It's still very good. :thumbsup:
Back over to you!

Edited by czardas

Share this post


Link to post
Share on other sites

#5 ·  Posted

For good result I'd drop the text to Word or another text processor offering good support for smart line wrapping and linguistically correct hyphenation. I only hope it's possible to get back the result after width shrinking (maybe by sending the result to a typewriter-style printer driver redirected to a file).

Perfect result would be provided by [La]TeX of course but it isn't obvious to use the first time you see it.


This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Share this post


Link to post
Share on other sites

#6 ·  Posted

You could also just spilt the binary. This would be the safest route of all.

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

This is just setting a long string to a variable and simply splitting it with line continuations. none of those concerns are present because the line breaks aren't real and only exist in the code.

If the OP were attempting to display this format of string to the user I could understand the wants, but when setting to $var....

Edited by iamtheky

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now