Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Replace numbers after the . with other numbers

Replace numbers after the . with other numbers

Scheduled Pinned Locked Moved C#
helpcsharptutorial
14 Posts 7 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 0 0x3c0

    If you simply want to round nnn.xxx down to nnn.0, then you need to use Math.Floor. If that doesn't work then look at Math.Ceiling - I'm not certain which way round it works with negative numbers

    Between the idea And the reality Between the motion And the act Falls the Shadow

    K Offline
    K Offline
    ksaw123
    wrote on last edited by
    #3

    Thank you for your reply. But what I am trying to say is that I have a text file that has many number that begins with (let say -9999.) and the numbers have four digits after (like 1234 [any four digital number]). What I want to do is that to replace any number that is after the . (like in -9999.1234 [which will be 1234])to be -9999.0000 ( the four digital after the . to be 0000). In short, search the file for -9999.**** to be replaced to -9999.0000 Note: * means any number. Regards,

    1 Reply Last reply
    0
    • K ksaw123

      Greetings, I am facing a problem with C# I have a set of files that I want to replace any number that has -9999.**** (like -9999.1234 or any number that can be after the dot .) to be -9999.0000. I have written a code that will put find any number that starts with -9999. However, I don't know how to replace it to be -9999.0000 . (the problem is finding and replacing the numbers after the . to be 0000) If anybody can help me, that will be highly appreciated. Thanks in advance. Regards,

      D Offline
      D Offline
      dan sh
      wrote on last edited by
      #4

      Is this a CSV file? I would say use File.ReadAllLines and then use Regular Expressions to find the decimal numbers. Then using the Matches collection you can replace digits. You can also use String.Replace method alone to do this.

      K 1 Reply Last reply
      0
      • D dan sh

        Is this a CSV file? I would say use File.ReadAllLines and then use Regular Expressions to find the decimal numbers. Then using the Matches collection you can replace digits. You can also use String.Replace method alone to do this.

        K Offline
        K Offline
        ksaw123
        wrote on last edited by
        #5

        Thanks... the problem I am facing is that how can I make the code to replace any number (not specify number) with a specify number. for example, I have these numbers in the file: -9999.1234 -9999.2345 -4021.0101 -9999.0987 -9999.7654 -7892.4132 -9999.0393 and etc... I want any number that has -9999. (like -9999.1234, -9999.2345 and etc...) to be replaced with -9999.0000 I want a code that can do that in C#. Note: I wrote a code to read from the file and put each line in a array of type string. What I want is that a code to replace any number that has -9999. (like -9999.1234, -9999.2345 and etc...) with -9999.0000 Regards,

        D A P 3 Replies Last reply
        0
        • K ksaw123

          Thanks... the problem I am facing is that how can I make the code to replace any number (not specify number) with a specify number. for example, I have these numbers in the file: -9999.1234 -9999.2345 -4021.0101 -9999.0987 -9999.7654 -7892.4132 -9999.0393 and etc... I want any number that has -9999. (like -9999.1234, -9999.2345 and etc...) to be replaced with -9999.0000 I want a code that can do that in C#. Note: I wrote a code to read from the file and put each line in a array of type string. What I want is that a code to replace any number that has -9999. (like -9999.1234, -9999.2345 and etc...) with -9999.0000 Regards,

          D Offline
          D Offline
          dan sh
          wrote on last edited by
          #6

          Quick and dirty way:

            string sFile = System.IO.File.ReadAllText(@"c:\\test.txt");
            string sRegEx = @"(\\.\[0-9\]\[0-9\]\[0-9\]\[0-9\])";
          
            foreach (Match oMatch in Regex.Matches(sFile, sRegEx)) {
              sFile = sFile.Replace(oMatch.Value.ToString(), ".0000");
            }
            System.IO.File.WriteAllText(@"c:\\test.txt", sFile);
          

          I would suggest you to search for a better Regular expression since, here I have hardcoded the number of digits after decimal.

          H OriginalGriffO 2 Replies Last reply
          0
          • K ksaw123

            Thanks... the problem I am facing is that how can I make the code to replace any number (not specify number) with a specify number. for example, I have these numbers in the file: -9999.1234 -9999.2345 -4021.0101 -9999.0987 -9999.7654 -7892.4132 -9999.0393 and etc... I want any number that has -9999. (like -9999.1234, -9999.2345 and etc...) to be replaced with -9999.0000 I want a code that can do that in C#. Note: I wrote a code to read from the file and put each line in a array of type string. What I want is that a code to replace any number that has -9999. (like -9999.1234, -9999.2345 and etc...) with -9999.0000 Regards,

            A Offline
            A Offline
            Alan N
            wrote on last edited by
            #7

            Hi, Do you need to know the fractional part of the number or will a simple text replacement suffice? i.e. If string starts with "-9999." then string = "-9999.0000" Alan.

            1 Reply Last reply
            0
            • D dan sh

              Quick and dirty way:

                string sFile = System.IO.File.ReadAllText(@"c:\\test.txt");
                string sRegEx = @"(\\.\[0-9\]\[0-9\]\[0-9\]\[0-9\])";
              
                foreach (Match oMatch in Regex.Matches(sFile, sRegEx)) {
                  sFile = sFile.Replace(oMatch.Value.ToString(), ".0000");
                }
                System.IO.File.WriteAllText(@"c:\\test.txt", sFile);
              

              I would suggest you to search for a better Regular expression since, here I have hardcoded the number of digits after decimal.

              H Offline
              H Offline
              himanshu2561
              wrote on last edited by
              #8

              d@nish wrote:

              string sRegEx = @"(\.[0-9][0-9][0-9][0-9])";

              you can write

              string sRegEx = @"(\.[0-9]{4})";

              :)

              himanshu

              1 Reply Last reply
              0
              • K ksaw123

                Thanks... the problem I am facing is that how can I make the code to replace any number (not specify number) with a specify number. for example, I have these numbers in the file: -9999.1234 -9999.2345 -4021.0101 -9999.0987 -9999.7654 -7892.4132 -9999.0393 and etc... I want any number that has -9999. (like -9999.1234, -9999.2345 and etc...) to be replaced with -9999.0000 I want a code that can do that in C#. Note: I wrote a code to read from the file and put each line in a array of type string. What I want is that a code to replace any number that has -9999. (like -9999.1234, -9999.2345 and etc...) with -9999.0000 Regards,

                P Offline
                P Offline
                Pete OHanlon
                wrote on last edited by
                #9

                The following regex finds all numbers that conform to the pattern -9.9999, where the first part can have any number of digits (and can be a positive or negative integer), but the part after the period is constrained to 4 digits.

                Regex regex = new Regex(
                @"(((?<Start>-?)(?<Part>\d*))(\.\d{4}))",
                RegexOptions.IgnoreCase
                | RegexOptions.Multiline
                | RegexOptions.IgnorePatternWhitespace
                | RegexOptions.Compiled
                );

                You can then do a replace on this using the pattern:

                ${Start}${Part}.0000

                This version of the code prevents you from incorrectly grabbing items such as A.1234 or the like. [Edit]Modified because I didn't have Encode HTML tags when pasting set, and the group tags were hidden

                "WPF has many lovers. It's a veritable porn star!" - Josh Smith

                As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.

                My blog | My articles | MoXAML PowerToys | Onyx

                modified on Tuesday, July 7, 2009 6:44 AM

                D OriginalGriffO 2 Replies Last reply
                0
                • D dan sh

                  Quick and dirty way:

                    string sFile = System.IO.File.ReadAllText(@"c:\\test.txt");
                    string sRegEx = @"(\\.\[0-9\]\[0-9\]\[0-9\]\[0-9\])";
                  
                    foreach (Match oMatch in Regex.Matches(sFile, sRegEx)) {
                      sFile = sFile.Replace(oMatch.Value.ToString(), ".0000");
                    }
                    System.IO.File.WriteAllText(@"c:\\test.txt", sFile);
                  

                  I would suggest you to search for a better Regular expression since, here I have hardcoded the number of digits after decimal.

                  OriginalGriffO Offline
                  OriginalGriffO Offline
                  OriginalGriff
                  wrote on last edited by
                  #10

                  Or better:

                          string sFile = System.IO.File.ReadAllText(@"c:\\test.txt");
                          Regex r = new Regex(@"(\\.\[0-9\]\[0-9\]\[0-9\]\[0-9\])");      
                          sFile = r.Replace(sFile, ".0000");      
                          System.IO.File.WriteAllText(@"c:\\test.txt", sFile);            
                  

                  He still needs to find a better regex though!

                  No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                  "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                  "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                  1 Reply Last reply
                  0
                  • P Pete OHanlon

                    The following regex finds all numbers that conform to the pattern -9.9999, where the first part can have any number of digits (and can be a positive or negative integer), but the part after the period is constrained to 4 digits.

                    Regex regex = new Regex(
                    @"(((?<Start>-?)(?<Part>\d*))(\.\d{4}))",
                    RegexOptions.IgnoreCase
                    | RegexOptions.Multiline
                    | RegexOptions.IgnorePatternWhitespace
                    | RegexOptions.Compiled
                    );

                    You can then do a replace on this using the pattern:

                    ${Start}${Part}.0000

                    This version of the code prevents you from incorrectly grabbing items such as A.1234 or the like. [Edit]Modified because I didn't have Encode HTML tags when pasting set, and the group tags were hidden

                    "WPF has many lovers. It's a veritable porn star!" - Josh Smith

                    As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.

                    My blog | My articles | MoXAML PowerToys | Onyx

                    modified on Tuesday, July 7, 2009 6:44 AM

                    D Offline
                    D Offline
                    dan sh
                    wrote on last edited by
                    #11

                    Pete O'Hanlon wrote:

                    Regex regex = new Regex( @"(((?-?)(?\d*))(\.\d{4}))", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled );

                    "parsing "(((?-?)(?\d*))(\.\d{4}))" - Unrecognized grouping construct." This is the exception while using your regex.

                    P 1 Reply Last reply
                    0
                    • D dan sh

                      Pete O'Hanlon wrote:

                      Regex regex = new Regex( @"(((?-?)(?\d*))(\.\d{4}))", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled );

                      "parsing "(((?-?)(?\d*))(\.\d{4}))" - Unrecognized grouping construct." This is the exception while using your regex.

                      P Offline
                      P Offline
                      Pete OHanlon
                      wrote on last edited by
                      #12

                      See the modification above. I didn't have "Encode HTML tags when pasting" set, so the group tags were hidden

                      "WPF has many lovers. It's a veritable porn star!" - Josh Smith

                      As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.

                      My blog | My articles | MoXAML PowerToys | Onyx

                      1 Reply Last reply
                      0
                      • P Pete OHanlon

                        The following regex finds all numbers that conform to the pattern -9.9999, where the first part can have any number of digits (and can be a positive or negative integer), but the part after the period is constrained to 4 digits.

                        Regex regex = new Regex(
                        @"(((?<Start>-?)(?<Part>\d*))(\.\d{4}))",
                        RegexOptions.IgnoreCase
                        | RegexOptions.Multiline
                        | RegexOptions.IgnorePatternWhitespace
                        | RegexOptions.Compiled
                        );

                        You can then do a replace on this using the pattern:

                        ${Start}${Part}.0000

                        This version of the code prevents you from incorrectly grabbing items such as A.1234 or the like. [Edit]Modified because I didn't have Encode HTML tags when pasting set, and the group tags were hidden

                        "WPF has many lovers. It's a veritable porn star!" - Josh Smith

                        As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.

                        My blog | My articles | MoXAML PowerToys | Onyx

                        modified on Tuesday, July 7, 2009 6:44 AM

                        OriginalGriffO Offline
                        OriginalGriffO Offline
                        OriginalGriff
                        wrote on last edited by
                        #13

                        Pete O'Hanlon wrote:

                        This version of the code prevents you from incorrectly grabbing items such as A.1234 or the like.

                        Um, no it doesn't - you need to replace the '*' with a '+' or it matches 0 digits.

                        Regex regex = new Regex( @"(((?<Start>-?)(?<Part>\d+))(\.\d{4}))",
                        RegexOptions.IgnoreCase |
                        RegexOptions.Multiline |
                        RegexOptions.IgnorePatternWhitespace |
                        RegexOptions.Compiled );

                        No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                        "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                        "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                        P 1 Reply Last reply
                        0
                        • OriginalGriffO OriginalGriff

                          Pete O'Hanlon wrote:

                          This version of the code prevents you from incorrectly grabbing items such as A.1234 or the like.

                          Um, no it doesn't - you need to replace the '*' with a '+' or it matches 0 digits.

                          Regex regex = new Regex( @"(((?<Start>-?)(?<Part>\d+))(\.\d{4}))",
                          RegexOptions.IgnoreCase |
                          RegexOptions.Multiline |
                          RegexOptions.IgnorePatternWhitespace |
                          RegexOptions.Compiled );

                          No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                          P Offline
                          P Offline
                          Pete OHanlon
                          wrote on last edited by
                          #14

                          OriginalGriff wrote:

                          Um, no it doesn't - you need to replace the '*' with a '+' or it matches 0 digits.

                          Good spot.

                          "WPF has many lovers. It's a veritable porn star!" - Josh Smith

                          As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.

                          My blog | My articles | MoXAML PowerToys | Onyx

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups