Get multiple numbers from a string

后端 未结 3 1910
轻奢々
轻奢々 2021-01-23 16:40

I have strings like

AS_!SD 2453iur ks@d9304-52kasd

I need to get the 2 frist numbres of the string:

for that case will be:

相关标签:
3条回答
  • 2021-01-23 17:06

    You can loop chars of your string parsing them, if you got a exception thats a letter if not is a number them you must to have a list to add this two numbers, and a counter to limitate this.

    follow a pseudocode:

    for char in string:
    
    if counter == 2:
     stop loop
    
    if parse gets exception
     continue
    
    else
     loop again in samestring stating this point
     if parse gets exception
      stop loop
     else add char to list
    
    0 讨论(0)
  • 2021-01-23 17:13

    Alternatively you can use the ASCII encoding:

    string value = "AS_!SD 2453iur ks@d9304-52kasd";
    
    byte zero = 48; // 0
    byte nine = 57; // 9
    
    byte[] asciiBytes = Encoding.ASCII.GetBytes(value);
    
    byte[] asciiNumbers = asciiBytes.Where(b => b >= zero && b <= nine)
                        .ToArray();
    
    char[] numbers = Encoding.ASCII.GetChars(asciiNumbers);
    
    // OR
    
    string numbersString =  Encoding.ASCII.GetString(asciiNumbers);
    
    //First two number from char array
    int aNum = Convert.ToInt32(numbers[0]);
    int bNum =  Convert.ToInt32(numbers[1]);
    
    //First two number from string
    string aString = numbersString.Substring(0,2);
    
    0 讨论(0)
  • 2021-01-23 17:20

    This solution will take two first numbers, each can have any number of digits

    string s =  "AS_!SD 2453iur ks@d9304-52kasd";
    
    MatchCollection matches = Regex.Matches(s, @"\d+");
    
    string[] result = matches.Cast<Match>()
                             .Take(2)
                             .Select(match => match.Value)
                             .ToArray();
    
    Console.WriteLine( string.Join(Environment.NewLine, result) );
    

    will print

    2453
    9304
    

    you can parse them to int[] by result.Select(int.Parse).ToArray();

    0 讨论(0)
提交回复
热议问题