How do you remove all the alphabetic characters from a string?

后端 未结 6 1547
时光说笑
时光说笑 2020-12-24 10:18

I have a string containg alphabetic characters, for example:

  1. 254.69 meters
  2. 26.56 cm
  3. 23.36 inches
相关标签:
6条回答
  • 2020-12-24 10:56

    Hi another solution is:

    // add directive at the top 
    using System.Text.RegularExpressions;
    string s = "24,99";
    string numberOnly = Regex.Replace(s, "[^0-9,-]+", "")
    

    This solution will not remove the dot e.g. question from user1804084:

    this remove the dot for me e.g. 24.99 somechracter -> 2499

    However it can still be convertet to a double where adding and subtraction works as normal.

    0 讨论(0)
  • 2020-12-24 10:59

    Using LINQ:

    using System.Linq;
    
    string input ="57.20000 KG ";
    string output = new string(input.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray());
    
    0 讨论(0)
  • 2020-12-24 11:06

    Use CharMatcher API from Google's Guava library:

    String magnitudeWithUnit = "254.69 meter";
    String magnitude = CharMatcher.inRange('a', 'z').or(inRange('A', 'Z')).removeFrom(magnitudeWithUnit);
    

    Do static-import CharMatcher.inRange(..). You can trim the results for trailing space.

    0 讨论(0)
  • 2020-12-24 11:07

    The Regex, and Vlad's LINQ answers cover the solution well. And are both good options.

    I had a similar problem, but I also wanted to only explicitly strip letters, and not to strip white space or etc, with this variant.

    I also wanted it usable as below. Any of the other solutions could be packaged in a similar manner.

    public static string StripAlpha(this string self)
    {
        return new string( self.Where(c => !Char.IsLetter(c)).ToArray() );
    }
    
    public static string StripNonNumeric(this string self)
    {
        // Use Vlad's LINQ or the Regex Example
        return new string(self.Where(c=>(Char.IsDigit(c)||c=='.'||c==',')).ToArray()) ;  // See Vlad's
    
    }
    

    This would then be used such as:

    var newString = someString.StripAlpha();
    var newString2 = someString.StripNonNumeric();
    
    0 讨论(0)
  • 2020-12-24 11:10

    This should work:

    // add directive at the top 
    using System.Text.RegularExpressions;
    
    string numberOnly = Regex.Replace(s, "[^0-9.]", "")
    
    0 讨论(0)
  • 2020-12-24 11:10

    You should be able to solve this using Regex. Add the following reference to your project:

    using System.Text.RegularExpressions;
    

    after that you can use the following:

    string value = Regex.Replace(<yourString>, "[A-Za-z ]", "");
    double parsedValue = double.Parse(value);
    

    Assuming you have only alphabetic characters and space as units.

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