Bonsoir,
je fais actuellement un navigateur web en c# et j'ai le problème suivant : créer une recherche web si l'url rentré est invalide.
mon problème est que mon algorithme n'a pas l'air de modifier la chaîne de caractère en effet j'ai deux modification a faire :
- si il y a un '+' le remplacer par '%2b'
- si il y a un espace (' ') le remplacer par un '+'
voici mon code :
le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 public static string traitement(string address) { string Addressreturn = "";//adresse retourné if ((creation_d_url(address)) == true)// on valide l'url entrée (retourne un booléen) { return address; } else { TransformationAddress(address);//transforme les + en %2B address.Replace(' ', '+');//remplace les espaces par des + Addressreturn = "https://duckduckgo.com/?q=" + address;//concatène address avec l'url de recherche de duckduck go avec l'address return Addressreturn; //renvoie l'addresse de recherche pour que le navigateur y accède } } private static bool creation_d_url(string address) //fonction qui renvoie vrai ou faut en fonction du résultat du traitement { //création d'une uri a valeur "null" Uri CreatedUri; //on tente de créer l'url en vérifiant qu'elle est comforme a une url http ou https bool IsValid = Uri.TryCreate(address, UriKind.Absolute, out CreatedUri) && (CreatedUri.Scheme == Uri.UriSchemeHttp || CreatedUri.Scheme == Uri.UriSchemeHttps); if ((address == "") || (!IsValid)) { return false; } else { return true; } } private static string TransformationAddress (string address) { List<char> result = new List<char>(); int LongueurAddress = address.Length; foreach (char element in address) { if ((element == '+') && (LongueurAddress > 1)) { result.Add('%'); result.Add(','); result.Add('2'); result.Add(','); result.Add('b'); result.Add(','); } else { if ((element == '+') && (LongueurAddress <= 1)) { result.Add('%'); result.Add(','); result.Add('2'); result.Add(','); result.Add('b'); } else { if (LongueurAddress > 1) { result.Add(element); result.Add(','); } else { result.Add(element); } } } LongueurAddress -= 1; } address = result.ToString(); return address; } }
si je rentre 1+1 il me renvoie https://duckduckgo.com/?q=1+1 ce qui fais comme si je cherchais "1 1"
merci d'avance a ceux qui pourront m'aider
Partager