Correspondance Mid (instruction) Vb C# [Résolu]

jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 26 mars 2008 à 15:09 - Dernière réponse : jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 26 mars 2008 à 15:34
3
Merci
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]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de sebmafate
Meilleure réponse
Miltiades 233 Messages postés vendredi 21 mars 2003Date d'inscription 25 octobre 2010 Dernière intervention - 26 mars 2008 à 15:44
3
Merci
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...

Merci Miltiades 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Miltiades
Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 26 mars 2008 à 17:32
3
Merci
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-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_Bidou
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 26 mars 2008 à 15:14
0
Merci
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]
Commenter la réponse de sebmafate
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 26 mars 2008 à 15:19
0
Merci
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
Commenter la réponse de jrivet
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 26 mars 2008 à 15:28
0
Merci
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]
Commenter la réponse de sebmafate
Miltiades 233 Messages postés vendredi 21 mars 2003Date d'inscription 25 octobre 2010 Dernière intervention - 26 mars 2008 à 15:30
0
Merci
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...
Commenter la réponse de Miltiades
Miltiades 233 Messages postés vendredi 21 mars 2003Date d'inscription 25 octobre 2010 Dernière intervention - 26 mars 2008 à 15:30
0
Merci
oups, trop lent a repondre moi...

Nul ne devient grand par la guerre...
Commenter la réponse de Miltiades
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 26 mars 2008 à 15:43
0
Merci
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
Commenter la réponse de jrivet
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 26 mars 2008 à 15:51
0
Merci
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]
Commenter la réponse de sebmafate
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 26 mars 2008 à 15:58
0
Merci
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
Commenter la réponse de jrivet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 mars 2008 à 08:45
0
Merci
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
Commenter la réponse de jrivet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.