web-dev-qa-db-fra.com

comment obtenir un entier uniquement et supprimer toute la chaîne en C #

Comment puis-je supprimer les chaînes et obtenir uniquement des nombres entiers?

J'ai une ficelle (01 - ABCDEFG)

je n'ai besoin que de (01)

12
ghie
input = Regex.Replace(input, "[^0-9]+", string.Empty);
31
Bala R

Il y a quatre façons différentes de le faire (bien probablement plus mais j'ai choisi celles-ci).

# 1: Regex de Bala R

string output = Regex.Replace(input, "[^0-9]+", string.Empty);

# 2: regex de Donut et agent-j

string output = Regex.Match(input, @"\d+").Value;

# 3: Linq

string output = new string(input.ToCharArray().Where(c => char.IsDigit(c)).ToArray());

# 4: Sous-chaîne , pour que cela fonctionne, le tiret doit être dans la chaîne entre les chiffres et le texte.

string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "");

Avec ces entrées:

string input1 = "01 - ABCDEFG";
string input2 = "01 - ABCDEFG123";

Les résultats pour 1 et 2 seraient:

output1 = "01";
output2 = "01123";

Pour 3 et 4, les résultats seraient:

output1 = "01";
output2 = "01";

Si le résultat attendu consiste à obtenir tous les chiffres de la chaîne, utilisez # 1 ou # 2, mais si le résultat attendu consiste à obtenir uniquement les chiffres avant le tiret, utilisez # 3 ou # 4.

Avec une chaîne aussi courte que les n ° 1 et n ° 2, la vitesse est à peu près la même chose que pour les n ° 3 et 4, mais s'il y a beaucoup d'itérations ou que les chaînes sont quatre fois plus longues Le n ° 4 est plus rapide que le n ° 3.

Remarque: Si les parenthèses sont incluses dans les chaînes # 4, vous devez modifier ceci, mais cela ne le ralentira pas beaucoup:

string output = input.Substring(0, input.IndexOf("-")).Replace(" ", "").Replace("(", "");
8
Jens Granlund

essaye ça: 

Convert.ToInt32(string.Join(null, System.Text.RegularExpressions.Regex.Split(s, "[^\\d]")))

il retourne la valeur entière 1.

4
user800098

Obtenir tous les numéros de la chaîne  

string str = "01567438absdg34590";
            string result = "";

             result = Regex.Replace(str, @"[^\d]", "");

            Console.WriteLine(result);
            Console.Read();

Sortie: 0156743834590

1
Mizanur Rahman
string snum = System.Text.RegularExpression.Regex.Match(s, "\d+").Value;
int num;
if (!int.TryParse(snum, out num))
  throw new Exception();
1
agent-j

Vous devriez utiliser des expressions régulières - elles constituent un moyen assez puissant pour faire correspondre des chaînes de texte à certains modèles, et c'est un excellent scénario pour les utiliser. 

Le modèle "\d+" correspond à une séquence d'un ou plusieurs chiffres. Une méthode simple qui utilise ce modèle pour extraire all nombres d’une chaîne est la suivante:

public static List<int> ExtractInts(string input)
{
   return Regex.Matches(input, @"\d+")
      .Cast<Match>()
      .Select(x => Convert.ToInt32(x.Value))
      .ToList();
}

Pour que vous puissiez l'utiliser comme ceci:

List<int> result = ExtractInts("( 01 - ABCDEFG )");

Pour des informations plus détaillées sur les expressions régulières, voir cette page (MSDN) ou cette page (aide-mémoire utile) .

1
Donut

Découvrez ce billet de blog: http://weblogs.asp.net/sushilasb/archive/2006/08/03/How-to-extract-numbers-from-string.aspx

Un programme simple qui extrait le nombre de la chaîne en utilisant une expression régulière. 

class Program
    {
    static void Main(string[] args)
    {
      Console.WriteLine(ExtractNumbers("( 01 - ABCDEFG )"));    // 01
      Console.ReadLine();
    }

    static string ExtractNumbers(string expr)
    {
        return string.Join(null, System.Text.RegularExpressions.Regex.Split(expr, "[^\\d]"));
    }
}

J'espère que cela t'aides!

1
Jompa234
Response.Write(Convert.ToDecimal(string.Join(null, System.Text.RegularExpressions.Regex.Split(TextBox1.Text, "[^\\d .]"))));

Ceci concerne les nombres int et decimal.

0
waseim hossein

Essaye ça: 

string XYZ = string.Join(null, System.Text.RegularExpressions.Regex.Split(“XYZ  77”, “[^\d]”));
0
mangesh

Vous pouvez également utiliser cette méthode pour obtenir votre réponse appropriée.

string sentence = "10 cats, 20 dogs, 40 fish and 1 programmer";
 string[] digits= Regex.Split(sentence, @"\D+");
             foreach (string value in digits)
             {
                 int number;
                 if (int.TryParse(value, out number))
                 {
                     Debug.Log(value);
                 }
             }
0
Abhishek Tiwari