Community
    • Login

    How to automatically add space on both sides of the operator

    Scheduled Pinned Locked Moved General Discussion
    13 Posts 7 Posters 7.5k Views 2 Watching
    Loading More Posts
    • 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.
    • gwarahG Offline
      gwarah
      last edited by gwarah

      You could try to use “find and replace” feature, set to consider regular expressions, and replace all no-space (x) char with x followed a space in a current selection.

      Save it as a macro and apply in other parts of code.

      1 Reply Last reply Reply Quote 0
      • gwarahG Offline
        gwarah
        last edited by gwarah

        The workaround I ve suggested at the last post doesn t work in such cases

        ab=ab+1;

        But even so, I believe “find and replace” with a better regEx you will find out a solution.

        1 Reply Last reply Reply Quote 0
        • guy038G Offline
          guy038
          last edited by guy038

          Hello, @成轩 and All

          Without additional information, it’s quite hard to plan anything ! Which language are you using ?

          Anyway, I tried to find out a correct regex S/R, which :

          • Trims any trailing horizontal blank characters, before the End of Line

          • Keeps any leading indentation

          • Keeps the blank characters in any range "..........", too

          • Deletes any range of horizontal blank characters, before a comma

          • Normalizes to a single space character, any range of blank characters, even none, PRECEDING, either :

            • Any consecutive range of symbols ! " # $ % & ' * + - / : ; = ? @ \ ^ | ~

            • Any single symbol [ ] ( ) < > { }

            • Any consecutive range of word characters or dot Letter Digit _ .

          Of course, there are still few weird results ! For instance, the sentence “On the 10/27 of that year” would become “On the 10 / 27 of that year” but that other sentence “The value x=a*10/27+b” would produce the sentence “The value x = a * 10 / 27 + b” which is quite correct !

          For example, the statement “x=(((a+5)/(z-7/b)-sin(30))*Log(6))” would be developed as “x = ( ( ( a + 5 ) / ( z - 7 / b ) - sin ( 30 ) ) * Log ( 6 ) )” with, certainly, too many space characters than necessary ;-))


          A last example : here is, below, a simple Python script, regarding Unix Timestamp, with a very, very bad presentation ! You may select the option View > Show Symbol > Show All Characters to visualize all the blank characters

          Day        =        28			
          Month=3
          Year		=			2018
          Hours			=15                
          Minutes=19
          Seconds		=0
          		                    
          			# This small script get any Unix Timestamp
          			#        with the different time variables above
          			#        		defined with a correct numeric value
          
          Leap=int(Year    %4==0)-int(     Year%100==0)+int(Year%400==0)                            # = 1 if a is a LEAP year, = 0 if NOT
          
          Leap_Years=(Year      -1)//4-(Year-1)     //100+(Year-1)//400-477                           # = TOTAL of LEAP years, from 1970 to the year (Year-1)
          			
          Calendar_Day   =   round(30.57*(Month-1)-2*int(Month   >   2))+Day+int(Leap==1)		*		int(Month>2) # = TOTAL of days, from the 01/01 of Year, to Day, included
          
          Total_Days=(Year-1970)*365+Leap_Years+Calendar_Day-1                             # = TOTAL of days, from 01/01/1970, till (Day-1) of Year
                                            
          Unix_Time=Total_Days*86400+3600*Hours    +       60*Minutes+Seconds                          #  UNIX time, in seconds
          
          
          print("And,    here are.... the     results  :  ",Leap       ,Leap_Years,          Calendar_Day,Total_Days,Unix_Time, "<     Good Bye     >")
          
                  # The results are :
          		
          		# Leap=0
                  #		Leap_Year		=		12
                  # Calendar_Day = 87
                  #            Total_Days = 17618
                  # Unix_Time		=					1522250340
          

          • Open the Replace dialog ( Ctrl + H )

          • In the Find what: zone, type in the regex :

          (?-s)(\h+\R)|(\h*,)|(^)?\h*(".*?"|[]()<>{}[]|[!"#$%&'*+/:;=?@\\^`|~-]+|[\w.]+)
          
          • In the Replace with: zone, type in the regex
          (?1\r\n:(?2,:(?3$0:\x20\4)))
          
          • Tick the Wrap around option

          • Click, once, on the Replace All button ( or several times on the Replace button

          Et voilà ! You should get the following new text :

          Day = 28
          Month = 3
          Year = 2018
          Hours = 15
          Minutes = 19
          Seconds = 0
          
          			# This small script get any Unix Timestamp
          			# with the different time variables above
          			# defined with a correct numeric value
          
          Leap = int ( Year % 4 == 0 ) - int ( Year % 100 == 0 ) + int ( Year % 400 == 0 ) # = 1 if a is a LEAP year, = 0 if NOT
          
          Leap_Years = ( Year - 1 ) // 4 - ( Year - 1 ) // 100 + ( Year - 1 ) // 400 - 477 # = TOTAL of LEAP years, from 1970 to the year ( Year - 1 )
          
          Calendar_Day = round ( 30.57 * ( Month - 1 ) - 2 * int ( Month > 2 ) ) + Day + int ( Leap == 1 ) * int ( Month > 2 ) # = TOTAL of days, from the 01 / 01 of Year, to Day, included
          
          Total_Days = ( Year - 1970 ) * 365 + Leap_Years + Calendar_Day - 1 # = TOTAL of days, from 01 / 01 / 1970, till ( Day - 1 ) of Year
          
          Unix_Time = Total_Days * 86400 + 3600 * Hours + 60 * Minutes + Seconds # UNIX time, in seconds
          
          
          print ( "And,    here are.... the     results  :  ", Leap, Leap_Years, Calendar_Day, Total_Days, Unix_Time, "<     Good Bye     >" )
          
                  # The results are :
          
          		# Leap = 0
                  # Leap_Year = 12
                  # Calendar_Day = 87
                  # Total_Days = 17618
                  # Unix_Time = 1522250340
          

          Of course, the trailing comments and, generally, the possible lists are not aligned, too :-( Anyway, I just ran that Python3 script, after the S/R modifications, without any trouble !

          You may use this Unix Timestamp Converter to verify my calculus !

          Cheers,

          guy038

          P.S. :

          • This Python example is quite raw and simple ! My initial program, about conversions Date <–> Unix Timestamp, was written in the old Qbasic language and some months ago, I simply translated the main part, as an Python3 exercise , about mathematics ;-))

          • About 00h30, in France ! So, I’m a bit lazy to explain how this regex S/R works ! May be next time, if you offer me… some beer ;-))

          1 Reply Last reply Reply Quote 0
          • Gogo NeatzaG Offline
            Gogo Neatza
            last edited by

            @成轩 : Spend less than ten seconds to write your own Macro !

            Scott SumnerS 1 Reply Last reply Reply Quote 0
            • Scott SumnerS Offline
              Scott Sumner @Gogo Neatza
              last edited by

              @Gogo-Neatza said:

              Spend less than ten seconds to write your own Macro !

              I’m not sure how THAT is helpful in any way…please explain if you can…

              @guy038 said:

              …the statement “x=(((a+5)/(z-7/b)-sin(30))*Log(6))” would be … “x = ( ( ( a + 5 ) / ( z - 7 / b ) - sin ( 30 ) ) * Log ( 6 ) )” with…too many space characters

              It is very subjective (i.e., everybody likes it their own way), but I definitely agree that this is too spacey:

              x = ( ( ( a + 5 ) / ( z - 7 / b ) - sin ( 30 ) ) * Log ( 6 ) )
              

              but I like this version, which doesn’t add space adjacent to ( or ) :

              x = (((a + 5) / (z - 7 / b) - sin(30)) * Log(6))
              

              The original is just visually painful …ouch! :

              x=(((a+5)/(z-7/b)-sin(30))*Log(6))
              

              I think I will make the modification to the regex to avoid the “too spacey” condition and then record it as a Replace All, In Selection macro, for handy use when I get a short snippet of code from (e.g.) stackoverflow and don’t like the original whitespacing of an equation. (Is this what @Gogo-Neatza meant?!)

              BTW, @guy038, I like this site for timestamp conversion.

              1 Reply Last reply Reply Quote 0
              • vtech7V Offline
                vtech7
                last edited by

                Hi, in order to convert the following sample of code:

                x=(((a+5)/(z-7/b)-sin(30))*Log(6))

                to this one: (without double spacing)

                x = ( ( ( a + 5 ) / ( z - 7 / b ) - sin ( 30 ) ) * Log ( 6 ) )

                find:

                (([\w])([^\w|\s]))|(([^\w|\s])([\w]))|(([^\w|\s])([^\w|\s]))

                replace:

                (?1\2 \3)(?4\5 \6)(?7\8 \9)

                1 Reply Last reply Reply Quote 0
                • vtech7V Offline
                  vtech7
                  last edited by

                  I just forgot to mention that the above find and replace must apply 2 times (for the given sample code).

                  Scott SumnerS 1 Reply Last reply Reply Quote 0
                  • Scott SumnerS Offline
                    Scott Sumner @vtech7
                    last edited by

                    @vtech7

                    Hmmm…or just put the spaces in by this process:

                    • position the caret appropriately
                    • press the space bar once
                    • REPEAT above steps until desired effect is achieved
                    1 Reply Last reply Reply Quote 0
                    • gwarahG Offline
                      gwarah
                      last edited by gwarah

                      Maybe this issue would be a case to new feature request (or plugin suggestion) in a way to put spaces between chars of current line, and the user lists in a field the sequences that wouldn’t applied (ex. ++, —,…). There would be a general sequence list and others to each language.

                      1 Reply Last reply Reply Quote 0
                      • 成轩成 Offline
                        成轩
                        last edited by

                        I also hope that such a plugin can be selected for different languages. I hope it can automatically determine the operator I entered and then automatically add spaces. Although regular expression processing can achieve the above operations, I think it is not too friendly and convenient

                        1 Reply Last reply Reply Quote 0
                        • 成轩成 Offline
                          成轩
                          last edited by

                          Thank you all for answering questions

                          1 Reply Last reply Reply Quote 0
                          • Fahim AnwerF Offline
                            Fahim Anwer
                            last edited by

                            You could try to use “find and replace” feature, set to consider regular expressions, and replace all no-space (x) char with x followed a space in a current selection.

                            Save it as a macro and apply in other parts of code.
                            https://10bestgame.com/instagram-cool-captions/

                            1 Reply Last reply Reply Quote 0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            • First post
                              Last post
                            The Community of users of the Notepad++ text editor.
                            Powered by NodeBB | Contributors