=====Évaluation d'une expression (opération ou condition) sous forme de texte===== La première (mauvaise) solution est d'utiliser ''ScriptControl''. Ce composant est dépendant de Windows et n'est pas compatible 64 bits. La plateforme cible doit être ''x86'' et non ''Any CPU''. En plus, il ne s'agit pas d'un composant natif c# et donc la modification de code à la volée (en debug) d'une fonction contenant ce contrôle est impossible. MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl(); sc.Language = "VBScript"; string expression = "1+1"; object result = null; try { result = sc.Eval(expression); } catch (COMException) { throw new Exception("Impossible d'évaluer l'expression VB : " + expression); } string resultat = result.ToString(); La bonne solution est d'utiliser ''DataTable''. DataTable dt = new DataTable(); object result = null; try { result = dt.Compute(condition, ""); } catch (SyntaxErrorException) { throw new Exception("Impossible d'évaluer l'expression VB : " + condition); } string resultat = result.ToString(); [[http://stackoverflow.com/questions/333737/evaluating-string-342-yield-int-18|c# - Evaluating string _3_(4+2)_ yield int 18 - Stack Overflow]] {{ :lang:csharp:textes:c_-_evaluating_string_3_4_2_yield_int_18_-_stack_overflow_2020-04-28_9_13_20_pm_.html |Archive du 02/12/2008 le 28/04/2020}} =====Concaténation de string===== Il est fortement déconseillé d'utiliser dans des boucles la concaténation de string puisqu'en interne, ''C#'' crée à chaque fois un nouveau ''string''. Dans ce cas, il est conseillé d'utiliser un ''StringBuilder''. StringBuilder stringBuilder = new StringBuilder("Début"); stringBuilder.Append("coucou").Append(", bien le bonjour."); string finalement = stringBuilder.ToString(); =====Valeur numérique d'un caractère===== Un simple cast. int val = (int) 'Y'; [[http://stackoverflow.com/questions/3414900/how-to-get-a-char-from-an-ascii-character-code-in-c-sharp|How to get a Char from an ASCII Character Code in c# - Stack Overflow]] {{ :lang:csharp:textes:how_to_get_a_char_from_an_ascii_character_code_in_c_-_stack_overflow_2020-04-28_9_13_17_pm_.html |Archive du 05/08/2010 le 28/04/2020}} Cependant, cela ne marche pas forcément très bien en fonction des besoins : le symbole ''œ'' renverra 339 et non pas 156. Pour récupérer 156, il faut : Encoding.Default.GetBytes("œ")[0]; =====Expression régulière===== Regex regex = new Regex(@"^.*:\s*DB\s*(.*)(,.*)*(;.*)?$"); Match match = regex.Match(texte); if (match.Success) { Console.WriteLine(match.Groups[0].Value); } [[https://www.dotnetperls.com/regex|C# Regex.Match Examples_ Regular Expressions - Dot Net Perls]] {{ :lang:csharp:textes:c_regex.match_examples_regular_expressions_-_dot_net_perls_2020-04-28_9_13_15_pm_.html |Archive le 28/04/2020}} =====Le caractère null===== Pour déterminer la longueur d'une chaîne de caractère, on utilise la propriété ''Length'', là où en ''C'', on recherche le caractère ''null''. Mais il peut arriver qu'une chaîne de caractère (en ''C#'') possède un caractère ''null''. Pour vérifier sa présence, il faut faire tout simplement : texte.IndexOf('\0') != -1 =====Comparaison insensible à la casse===== StartsWith("texte", StringComparison.OrdinalIgnoreCase); EndsWith("texte", StringComparison.OrdinalIgnoreCase); IndexOf("texte", StringComparison.OrdinalIgnoreCase); Equals("texte1", "texte2", StringComparison.OrdinalIgnoreCase);