2017-09-20 2 views
0

Je dois convertir ceci:non alphanumériques Remplacer les caractères mais gardez décimaux en C# string

7,5 kg (estimation). 2,4 kilos (?% Au total/= "º), ¿# @ --__

dans ce.

2,4 kilos 7,5 kg estiment au total

points à noter:

  • supprimer non alphanumériques, mais garder les numéros
  • nombres peuvent avoir une notation de point ou une virgule
  • nombres peuvent être des nombres entiers ou décimaux

EDIT

je me demande que je dois nier cette regex @"\d+[\.\,]?\d* (qui correspond à des nombres entiers et décimaux), puis retirer non alphanumériques sur le résultat. Je ne sais pas si c'est possible dans un seul Regex.

Une regex serait ok.
Le code C# déconner avec les caractères serait bien aussi.

EDIT 2

J'ai fait un peu de recherches sur la réponse Keith pour mieux comprendre:

enter image description here

+0

Eh bien, allez-y, si vous avez des problèmes, revenez et posez une question spécifique –

+0

Eh bien, je me suis essayé dur sans succès. C'est pourquoi je demande ici. J'ai besoin d'une sorte de "match tout sauf les choses correspondant' @ "\ d + [\. \,]? \ D *" ')" – xleon

+1

alternative avec lookahead négatif, mais pourrait ne pas gérer tous les cas de bord ['(?! ,] \ d) [^ 0-9a-zA-Z] + '] (https://regex101.com/r/wqYSWC/1) – Slai

Répondre

1

Vous pouvez faire quelque chose comme: -

public static string Filter(string s) 
{ 
    var regex = new Regex(@"(\d\.\d|\d,\d|[0-9a-zA-Z]|\s)+"); 
    var matches = regex.Matches(s); 
    var sb = new StringBuilder(); 
    foreach (var match in matches) sb.Append(match); 
    return sb.ToString(); 
} 

static void Main(string[] args) 
{ 
    Console.WriteLine(Filter("7.5kg (estimate). 2,4 kilos (total?%/=\"º).,¿#@--__")); 
} 

enter image description here