Increase by Letters, not just numbers?
-
To increase a list of numbers: “Alt-C” and enter numbers.
How do you do this type of thing for letters?A
B
C
Dor
a
b
c
d -
unfortunately this is not possible using the built in column editor.
only numbers can currently be incremented. -
Hello, @Moe-Skaato,
I do understand your request ! However, when you use the Column Editor to increment numbers, whatever its format, it just increases numbers, with the increment number, till the last line of current file is reached !
But how do you consider the sequence
A B C D...
? I mean, after the upper letterZ
do you expect the sequenceAA AB AC .... AZ BA BB BC .... BZ ...... ZA ZB ZC ..... ZZ
or any other kind of sequence ?Or do you only need the sequence
A B C.....Z
?Best regards,
guy038
-
@Meta-Chuh , Thanks for the input. That’s what I was thinking. ~: (
@guy038, I just need:
A
B
C
Das a vertical and “selected” range. It doesn’t have to go all the way to ‘Z’
-
Hi, @moe-skaato and All,
If you just need to insert the range
ABCD
, in column, here is a work-around, using regular expressions !Let’s suppose you have this text, ( part of N++ license.txt ) Note that I deliberately deleted the leading space !
****************** IMPORTANT NOTEPAD++ LICENSE TERMS ********************** * * * Copyright (C)2016 Don HO <don.h@free.fr>. This program is free * * software; you may redistribute and/or modify it under the terms of the * * GNU General Public License as published by the Free Software * * Foundation; Version 2 with the clarifications and exceptions described * * below. This guarantees your right to use, modify, and redistribute * * this software under certain conditions. * * * * Note that we consider an application to constitute a "derivative work" * * for the purpose of this license if it integrates/includes/aggregates * * Notepad++ into a proprietary executable installer, such as those * * produced by InstallShield. Our interpretation applies only to Notepad++ * * - we don't speak for other people's GPL works. * * * * This program is distributed in the hope that it will be useful, but * * WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * ***************************************************************************/
And that you want to insert, in columns,
A B C D
, at column 35 of each line, from the third line ( Copyright … )Then :
-
Place the cursor at the very beginning of line
#3
( Copyright ©2016 Don HO… ) -
Open the Replace dialog (
Ctrl + H
) -
SEARCH
(?-s)^(.{34})(.+\R.{34})(.+\R.{34})(.+\R.{34})
-
REPLACE
\1A\2B\3C\4D
-
Select the
Regular expression
search mode -
Click first on the
Find Next
button -
Now, click once on the
Replace
button
You should get :
****************** IMPORTANT NOTEPAD++ LICENSE TERMS ********************** * * * Copyright (C)2016 Don HO <don.h@Afree.fr>. This program is free * * software; you may redistribute aBnd/or modify it under the terms of the * * GNU General Public License as puCblished by the Free Software * * Foundation; Version 2 with the cDlarifications and exceptions described * * below. This guarantees your right to use, modify, and redistribute * * this software under certain conditions. * * * * Note that we consider an application to constitute a "derivative work" * * for the purpose of this license if it integrates/includes/aggregates * * Notepad++ into a proprietary executable installer, such as those * * produced by InstallShield. Our interpretation applies only to Notepad++ * * - we don't speak for other people's GPL works. * * * * This program is distributed in the hope that it will be useful, but * * WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * ***************************************************************************/
Then , if you click, again, on the
Replace
button, this time, text is changed into :****************** IMPORTANT NOTEPAD++ LICENSE TERMS ********************** * * * Copyright (C)2016 Don HO <don.h@Afree.fr>. This program is free * * software; you may redistribute aBnd/or modify it under the terms of the * * GNU General Public License as puCblished by the Free Software * * Foundation; Version 2 with the cDlarifications and exceptions described * * below. This guarantees your righAt to use, modify, and redistribute * * this software under certain condBitions. * * C * * Note that we consider an applicaDtion to constitute a "derivative work" * * for the purpose of this license if it integrates/includes/aggregates * * Notepad++ into a proprietary executable installer, such as those * * produced by InstallShield. Our interpretation applies only to Notepad++ * * - we don't speak for other people's GPL works. * * * * This program is distributed in the hope that it will be useful, but * * WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * ***************************************************************************/
And so on ;-))
-
Notes :
-
To insert the letters at column
N
, just place the numberN-1
in the search regex -
If you want to use less letters ( for instance
A B C
), use the regex S/R-
SEARCH
(?-s)^(.{
N-1})(.+\R.{
N-1})(.+\R.{
N-1})
-
REPLACE
\1A\2B\3C
-
-
On the contrary, if you need more letters ( for instance the range
A B C D E
), use the regex S/R :-
SEARCH
(?-s)^(.{
N-1})(.+\R.{
N-1})(.+\R.{
N-1})(.+\R.{
N-1})(.+\R.{
N-1})
-
REPLACE
\1A\2B\3C\4D\5E
-
Hope that this work-around will help you, anyway !
Best regards,
guy038
-
-
Wow, I appreciate such a thorough answer, your
willingness to help and your patience is admirable!I’m not a programmer and not familiar with Regex enough to know what all to write out, but I think I could
follow your instructions fair enough.However, I’m not following your example as what I want, even though it may be such.
The language in the Regex part sounds related, but I’m not seeing anything in the images that looks close enough
in principle to follow. It’s probably there, I’m just not seeing it.So, let me clarify to ensure we are on the same page:
preset1= “description about preset”
preset2= “description about preset”
preset3= “description about preset”
preset4= “description about preset”
preset5= “description about preset”
preset6= “description about preset”
preset7= “description about preset”
preset8= “description about preset”
preset9= “description about preset”
preset10= “description about preset”
preset11= “description about preset”
preset12= “description about preset”to something like
presetA= “description about preset”
presetB= “description about preset”
presetC= “description about preset”
presetD= “description about preset”
presetE= “description about preset”
presetF= “description about preset”
presetG= “description about preset”
presetH= “description about preset”
presetI= “description about preset”
presetJ= “description about preset”
presetK= “description about preset”
presetL= “description about preset”or something like
preset1a= “description about preset”
preset2b= “description about preset”
preset3c= “description about preset”
preset4d= “description about preset”
preset5e= “description about preset”
preset6f= “description about preset”
preset7g= “description about preset”
preset8h= “description about preset”
preset9i= “description about preset”
preset10j= “description about preset”
preset11k= “description about preset”
preset12l= “description about preset”…if the column editor approach was possible it would have been super simple. I would have selected the column of “1-9” > start with “A” > increase by 1.
That would end in “I” > next select “10-12” > start with “J” > increase by 1. That would end in “K”So I guess you are saying, in principle, with your Regex example, I can achieve the same?
-
IMO, this kind of thing isn’t practical to do in Notepad++. Oh, I’m sure @guy038 will give you something, but… :)
-
@Alan-Kilborn, Thanks for suggestion.
It is realistic and useful for the specific context I’m using it in, just not a common practice. It is a way to “customize” a preset list for a plug-in.
I wouldn’t actually use the replacement where it is, rather at the beginning of the description. This will affect the order of how the presets are
executed as well as help group them thematically when viewing/editing the INI file. I just did it that way to make the general idea of what I want
easier to visualize so I wouldn’t have to write out a bunch more stuff.It would be a lot less practical to go in and out of 2 different programs to perform that one function.
-
Don’t misunderstand. I’m not trivializing what you need to do. I’m just saying that I don’t believe you will find what stock Notepad++ provides you up to the task. You could certainly use a scripting plugin to keep a solution entirely within Notepad++.
-
@Moe-Skaato said:
It doesn’t have to go all the way to ‘Z’
The statement above, does that mean you ONLY have about (or less than) 25 lines of coding to do. If so, then working with a regex is overkill. Often many minutes can be spent creating (designing) a regex complete with testing. If you only have a small number of lines it makes more sense to just do it manually. That is UNLESS you have to repeat these edits many times in different files.
I have also thought about how one might ‘increment’ characters and insert into lines, my suggestion is another method. It would take a few steps, but each is very easy to understand.
If I have original data:
“dahl”,“buried starship”
“dahl”,“clown prince”
…
“dahl”,“jaguar jewel”
…
“david”,“body soul”Original after adding line number and 2 #:
001##“dahl”,“buried starship”
002##“dahl”,“clown prince”
…
025##“dahl”,“jaguar jewel”
…
182##“david”,“body soul”Then open a new tab and insert the letters a through z copied the required number of times to equal the original data line numbers and prefixed with line numbers and a single #:
001#a
002#b
003#c
…
025#y
026#z
…
170#n
171#o
…
182#zCombined original data and the new data and then sorted numerically:
001##“dahl”,“buried starship”
001#a
002##“dahl”,“clown prince”
002#b
…
025##“dahl”,“jaguar jewel”
025#y
…
182##“david”,“body soul”
182#zA replace regex:
Find what:(?-s)^\d\d\d##(.+\R)\d\d\d#([a-z])\R*
Replace with:\2\1
The line numbers and the ‘#’ characters are added through the column editor function you have referenced.
In your particular example the regex (which I showed just above) would need altering to suit your data, but is easily achievable.
Terry
-
Hi, @moe-skaato, @alan-kilborn, @terry-r and All,
Of course, the fact of inserting letters, only at a specific column could be binding :-(( So, here is a new method, not based on columns ;-))
Assuming your text, in a new tab :
preset1= “description about preset” preset2= “description about preset” preset3= “description about preset” preset4= “description about preset” preset5= “description about preset” preset6= “description about preset” preset7= “description about preset” preset8= “description about preset” preset9= “description about preset” preset10= “description about preset” preset11= “description about preset” preset12= “description about preset”
Now, just append your list of letters, at the end of your text, with one letter per line ! Of course, you need to insert, at least, the
12
first letters, but you may list, for instance, all letters fromA
toZ
Let’s add letters from
A
toP
. So we get the text :preset1= “description about preset” preset2= “description about preset” preset3= “description about preset” preset4= “description about preset” preset5= “description about preset” preset6= “description about preset” preset7= “description about preset” preset8= “description about preset” preset9= “description about preset” preset10= “description about preset” preset11= “description about preset” preset12= “description about preset” A B C D E F G H I J K L M N O P
Now, using the regex S/R :
-
SEARCH
(?-s)^(preset)(\d+)(?=(?:.+\R){12}(.))|^(.\R)+.?\Z
-
REPLACE
?1\1\3
You should get, after a click on the
Replace All
button :presetA= “description about preset” presetB= “description about preset” presetC= “description about preset” presetD= “description about preset” presetE= “description about preset” presetF= “description about preset” presetG= “description about preset” presetH= “description about preset” presetI= “description about preset” presetJ= “description about preset” presetK= “description about preset” presetL= “description about preset”
And if you change the Replace regex with :
- REPLACE
?1\1\2\3
While keeping the Search regex, you’ll obtain :
preset1A= “description about preset” preset2B= “description about preset” preset3C= “description about preset” preset4D= “description about preset” preset5E= “description about preset” preset6F= “description about preset” preset7G= “description about preset” preset8H= “description about preset” preset9I= “description about preset” preset10J= “description about preset” preset11K= “description about preset” preset12L= “description about preset”
Of course, you can choose any list of letters, in any order and, also, the leading part of each line :
For instance, giving the initial text below :
preset1= “description about preset” preset2= “description about preset” preset3= “description about preset” preset4= “description about preset” preset5= “description about preset” preset6= “description about preset” preset7= “description about preset” preset8= “description about preset” preset9= “description about preset” preset10= “description about preset” preset11= “description about preset” preset12= “description about preset” z a y b x c w d v e u f t g s h r i q j
With the Replace regex, below ( Again, Search regex is not modified )
- REPLACE
?1Line #\2\3\t
Here is the result :
Line #1z = “description about preset” Line #2a = “description about preset” Line #3y = “description about preset” Line #4b = “description about preset” Line #5x = “description about preset” Line #6c = “description about preset” Line #7w = “description about preset” Line #8d = “description about preset” Line #9v = “description about preset” Line #10e = “description about preset” Line #11u = “description about preset” Line #12f = “description about preset”
As you can see, the limit is just your imagination. With regular expressions, you can modify text in so many ways ;-))
Notes :
-
The search regex begins with
(?-s)
, an in-line modifier, which tells that the dot (.
) will match one standard character ( not EOL ones ) -
Then there are two alternatives :
-
^(preset)(\d+)(?=(?:.+\R){12}(.))
-
^(.\R)+.?\Z
-
-
The first alternative matches, from beginning of line (
^
) , the literal sting preset, stored as group1
, followed with a number\d+
, stored as group2
but ONLY IF the look-ahead is true that is to say if it exists12
non-empty lines, with their EOL characters (\R
), followed with, at least, one character ( a letter) on the next line, stored as group3
-
Of course, in case that your text to re-number contains more or less than
12
lines, just indicate that exact number in the search regex, instead of the number12
! -
The second alternative simply matches the complete list of letters, at the end of your document. So a non-empty list of one-char lines
^(.\R)+
, possibly followed with a last char (.?
) before some possible EOL chars, ending the current file ( assertion\Z
) -
The replacement regex, for instance
?1Line #\2\3\t
, is a conditional replacement, which means that, IF group1
exists, then it writes, first, the expression Line #, followed with the initial numbers ( group2
), followed with the character, taken from the list of letters ( group3
) and, finally, a tabulation char (\t
)
Best Regards,
guy038
-