1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| private string GetSourceString(string sChaine)
{
// format de sChaine : "Replace(chainetest,oldvalue,newvalue)"
//décomposition de sChaine en 3 paramètres
string[] sReplaceParameters = GetReplaceParameters(sChaine);
if (sChaine.Substring(8).Contains("Replace"))
{
//si chainetest contient Replace appel récursif de la procédure sur chainetest
return GetSourceString(sReplaceParameters[0]).Replace(sReplaceParameters[1], sReplaceParameters[2]);
}
//si chainetest ne contient pas de replace on retourne simplement le résultat de la fonction replace
return sReplaceParameters[0].Replace(sReplaceParameters[1], sReplaceParameters[2]);
}
//procédure pour obtenir les 3 paramètres de ton Replace(chainetest,oldvalue,newvalue)
//Je te l'accorde c'est moche mais c'est vite fait et ça marche.
//je penses qu'on pourrait même récupérer récursivement les paramètres.
private string[] GetReplaceParameters(string sChaine)
{
string[] sReplaceParameters = new string[3];
int i = sChaine.Length;
while (!sChaine[i-1].Equals(','))
{
i--;
}
sReplaceParameters[2] = sChaine.Substring(i, sChaine.Length - 1 - i);
i--;
int j = i;
while (!sChaine[j - 1].Equals(','))
{
j--;
}
sReplaceParameters[1] = sChaine.Substring(j, i-j);
sReplaceParameters[0] = sChaine.Substring(8, j-9);
return sReplaceParameters;
} |
Partager