begin process at 2010 02 10 00:31:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

split chaine sans séparateur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

split chaine sans séparateur

mercredi 11 février 2009 à 15:08:01 | split chaine sans séparateur

babe59

Bonjour

j'ai une chaine des 40 caractères (longueur fixe). Cette chaine contient que des chiffres et est renseignée par paquet de 10 chiffres (soit 4 paquets maxi)

Ex 1 : "01234567899876543210                                      "
Ex 2 : "0123456789                                                          "
Ex 3 : 0123456789012345678901234567890123456789"

J'aimerai spliter cette chaine et la mettre dans un tableau de string.
J'essaye, sans réussite avec les regex.
pouvez vous m'aider ?

DT
mercredi 11 février 2009 à 15:41:09 | Re : split chaine sans séparateur

SharpMao

Membre Club
Hello,

Essaie plutôt avec SubString

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
mercredi 11 février 2009 à 16:01:56 | Re : split chaine sans séparateur

babe59

le substring m'obligera à faire une boucle... alors qu'avec le split une seule instruction suffira...

DT
mercredi 11 février 2009 à 16:03:59 | Re : split chaine sans séparateur

vagg

Sinon j'ai trouvé un petit truc certes sans le SubString : (là je récupère tes lots de 10 char dans un tableau)

            string[] tbstr = new string[4];
            string tonStr = "01234567899876543210                                      ";
            string stmp;
            for (int i = 0; i < tbstr.Length; i++)
            {
                stmp = tonStr.Remove(10, tonStr.Length - 10);
                tonStr = tonStr.Remove(0, 10);
                tbstr[i] = stmp;
            }


Ca fonctionne comme tu le souhaite, enfin je pense.

En espérant t'avoir mis sur la voie.
mercredi 11 février 2009 à 16:08:54 | Re : split chaine sans séparateur

vagg

Ta pas trop le choix avec le Split il te faut un caractère séparateur.
mercredi 11 février 2009 à 16:18:03 | Re : split chaine sans séparateur

babe59

en fait, je ne suis pas loin de la vérité avec

string

pattern = @"^(\d{10})(\d{10})(\d{10})$";mais j'ai une occurence vide en plus dans mon tableau de string... Je suis donc convaincu que c'est possible avec un simple "REGEX"

DT
mercredi 11 février 2009 à 16:30:54 | Re : split chaine sans séparateur

SharpMao

Membre Club
Hello,

Pas besoin de boucle :

string[] stringArray = new string[]{  theString.Substring(0,10),
                theString.Substring(10,10),
                theString.Substring(20,10),
                theString.Substring(30,10)};


Et tu as une tableau de string avec tes valeurs dedans.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
mercredi 11 février 2009 à 21:04:50 | Re : split chaine sans séparateur

Bidou

Administrateur CodeS-SourceS
Depuis quand on peut dire qu'une seule instruction est plus rapide que trois de suite?
Je dirais même qu'en principe, c'est plutôt l'inverse...

En l'occurance, sur une chaîne pas trop longue, j'aurais tendance à dire que la Regex sera moins bonne.
A tester...


-Blog-
-Site Perso-
lundi 13 avril 2009 à 09:54:10 | Re : split chaine sans séparateur

Robert33

Membre Club
Réponse acceptée !
Bonjour,

Bien que je sois d'accord avec Bidou,
Mais si on ne connait pas la longeur des chaines, et si, comme dans l'exemple, elles possedent d'autres caracteres (padding) je pense qu'un regex avec une pattern = "(\d{10})" devrait suffire.


private
Regex MyRegex = newRegex(
   "(\\d{10})",
   RegexOptions.IgnoreCase
   |
RegexOptions.Multiline
    |
RegexOptions.ExplicitCapture
   |
RegexOptions.CultureInvariant
   |
RegexOptions.Compiled
   );
privatevoid Search(string s)
{
   MatchCollection ms = MyRegex.Matches(s);
   Console.WriteLine("Trouvé {0} chaines de 10 caracteres dans '{1}'", ms.Count, s);
   foreach (Match m in ms)
      Console.WriteLine(m.ToString());
}
privatevoid button1_Click(object sender, EventArgs e)
{
   string Ex1 = "01234567899876543210                                      ";
   string Ex2 = "0123456789                                                          ";
   string Ex3 = "0123456789012345678901234567890123456789";

   Search(Ex1);
   Search(Ex2);
   Search(Ex3);

}




C# is amazing, enjoy it!


Cette discussion est classée dans : chiffres, chaine, ex, séparateur, split


Répondre à ce message

Sujets en rapport avec ce message

split dans une Chaine [ par fmerlin ] Je lit un fichier txt a l'aide d'un streamreader j'essaye de decouper chaque ligne trouver avec la fonction split, si jexecute une boucle pour balayer Chaine de caracteres - que des chiffres ? que des lettres ? [ par romagny13 ] Bonjour,encore une petite question :ppcomment peut - on vérifier en C# qu'une chaine de caractéres ne contient que des lettresen VB.NET il existe la m Doublement des \ [ par ducker88 ] Bonjour à tous,J'ai une question, et la réponse est certainement très simple.J'ai une chaine du type "c:\temp\fichier.txt" Ce que je voudrais c'est ob contraire de string.Split [ par babe59 ] Bonjour y a til une fonction qui fasse le contraire de string[] tabCh = ch1.Split ?en fait j'ai un tableau de string que je voudrais mettre dans une c conversion overflows [ par cudenetf ] bonjour,je lance une requete avec une operation de division...le resultat est sous la forme :9999.999999999999999999999999999999bref ya plein de chiff Conversion UNICODE/ANSI [ par mdelahais ] Bonjour,Je cherche à faire des conversions UNICODE/ANSI. Pour cela, j'ai vu qu'il fallait utilisé la fonction WideCharToMultilByte. Mais je n'arrive p Afficher les valeurs une chaine de caractére dans 1 Combobox, Enum [ par drcmomo ] Bonjour tout le monde !!Je vous expose mon probléme je dois afficher dans 1 combobox  une chaine de caractére associé a un Enum , j'arrive a afficher suppression des caractères [ par rabhi_basma ] salemSVP est ce que vous pouvez me répendre sur mon banale question concernant la suppression d'une caractère que ce soit(' ou _ ou \ ou ")qui se trou Fin de chaine [ par ddove53 ] Salut,la fin de chaine en C peut se faire comme suit:nomChaine[i] = '\0';Comment on fait en C#?Merci. Conversion caractères [ par Anne56 ] Bonjour, Voici mon problème. J'ai une base de données Access dans laquelle est stocké des chaines de caractères en chinois, en letton et je veux pouvo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales