Correspondance Mid (instruction) Vb C#

Résolu
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 26 mars 2008 à 15:09
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 27 mars 2008 à 08:45
Salut à tous.

Voilà déjà une ou deux heures que je tourne ne rond sans trouver de réelle réponse à ma question.

En VB6 il existe l'instruction Mid qui permet de remplacer un nombre indiqué de caracteres dans une variable String par des autres caracteres.

Mid(stringvar, start[, length]) =string
Élément, Description, ----
stringvar, Nom de la variable chaîne à modifier., ----
start, Donnée de type Variant (Long). Position du
caractère dans l'argument stringvar où commence le remplacement de
texte., ----
length, Facultatif. Donnée de type Variant (Long). Nombre
de caractères à remplacer. Si ce paramètre est omis, la totalité de l'argument
string est utilisée., ----
string, <object id="alink_5" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Expression de chaîne qui remplace une
partie de l'argument stringvar.

Question simple: existe t il une fonction equivalente dans le FrameWork, ou bien faut il la "réécrire"

en attendant vos réponses: Google is my friend
Merci de m'avoir lu
@+: Ju£i?n
Pensez: Réponse acceptée
A voir également:

12 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
26 mars 2008 à 15:34
piouff... string.Left n'existe pas

public string ReplaceAt(string inputString, int start, int length, string replaceString) {
   return string.Concat(inputString.Substring(0, start), replaceString, inputString.Substring(start + length));
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
3
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
26 mars 2008 à 15:44
avec ma methode ca donne:

public string ReplaceAt(string inputString, int start, int length, string replaceString)

{

    return inputString.Remove(start, length).Insert(start, replaceString);

}

je pense pas que ce soit plus rapide, mais perso je la trouve plus lisible...
(non testé...)

Nul ne devient grand par la guerre...
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
26 mars 2008 à 17:32
En terme de performance,

return inputString.Remove(start, length).Insert(start, replaceString);

est meilleur.
(Suffit de donner un coup de reflector pour s'en apercevoir)

<hr />
-My Blog-
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
26 mars 2008 à 15:14
hum... as-tu cherché un peu dans la doc ?

string toto = "lnzeldnzelnd";

toto.SubString(...);

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 15:19
Salut,
Mid a deux "fonctions"
CE que je cherche a faire, n'est PAS l'extraction de caracteres mais la "substitution".

du genre (qui ne fonctionne pas)

string p = "J'AI TESTE";
p.Substring(4,3) = "PAS";

Voila j'espère que c'est plus claire.

@+: Ju£i?n
Pensez: Réponse acceptée
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
26 mars 2008 à 15:28
non... il n'y a aucune "Instruction" qui fait ça en .net.

Mais je pense qu'écrire une méthode qui fait ça proprement doit prendre... 5sec :

public string ReplaceAt(string inputString, int start, int length, string replaceString) {
   return string.Concat(inputString.Left(start), replaceString, inputString.SubString(start + length));
}

(pas testé)

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
26 mars 2008 à 15:30
je pense seb, qu'il cherche plutot a faire un mix entre string.insert ( http://msdn2.microsoft.com/en-us/library/system.string.insert(VS.71).aspx )
et string.remove ( http://msdn2.microsoft.com/en-us/library/system.string.remove(VS.71).aspx )

car a ma connaissance il n'existe pas de fonction peremettant de remplacer dans une chaine n caracteres à la position x ...
ce qui etait ce que tu cherchais, non?

Nul ne devient grand par la guerre...
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
26 mars 2008 à 15:30
oups, trop lent a repondre moi...

Nul ne devient grand par la guerre...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 15:43
Re,
Merci de vous être pencher sur le sujet.
Rien n'existe déjà, donc.

Je sais que cela ne prends longtemps de les réécrire mais étant donné que le FrameWork est vaste, je pensais que quelques chose existait déjà, ca evite parfois de réinventer la roue. Sachant que souvent on la réinvente carré

La concordance sera donc

public string ReplaceAt(string inputString, int start, int length, string _
  replaceString)
{
    replaceString = replaceString.Substring(0, length);
    return string.Concat(inputString.Substring(0, start), replaceString, _
      inputString.Substring(start+ length));
}, ----
(Coloration syntaxique automatique par Kenji)

Merci
@+: Ju£i?n
Pensez: Réponse acceptée
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
26 mars 2008 à 15:51
Miltiades... j'aime bien aussi ta méthode...

et pour ceux qui fond du Framework .net 3.5 :

public string ReplaceAt(this string inputString, int start, int length, string replaceString) {
    return inputString.Remove(start, length).Insert(start, replaceString);
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 15:58
Salut,
C'est vrai que c'est pas mal aussi.
Pensons tout de meme a bien verifier la longueur replaceString pour avoir la correspondance avec le Mid VB6 soit.

public string ReplaceAt(string inputString, int start, int length, string _
  replaceString)

{
    replaceString = replaceString.Substring(0, lenght);
    return inputString.Remove(start, length).Insert(start, replaceString);

}, ----
(Coloration syntaxique automatique par Kenji)

[auteur/MILTIADES/72191.aspx > Miltiades] :Tu pourrais en faire un Snippet car celui ci (entre autres) il m'aurait été utile

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 mars 2008 à 08:45
Re,
MErci [auteur/BIDOU/13319.aspx Bidou], pour cette précision. Alors un snippet en vue ou personne ne va le faire ?

Je dis çà car je me vois pas trop le faire étant donné que c'est vous qui m'avez aidé.

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous