Notepad ++逐渐replace

比方说,我想有一个10行的数据,但我想要一个值增加每行或一块数据。 我如何增加这个价值?

例如….如果我有这些行,是否有一个正则expression式的方式取代id值增加?

<row id="1" /> <row id="1" /> <row id="1" /> <row id="1" /> <row id="1" /> 

—这是我想要它看起来像…(如果第一行的id上升一个确定)

 <row id="1" /> <row id="2" /> <row id="3" /> <row id="4" /> <row id="5" /> 

不知道正则expression式,但有一种方法可以让你在Notepad ++中做到这一点,虽然它不是很灵活。

在你给出的例子中,按住Alt并select你想改变的数字列。 然后转到Edit->Column Editor并在出现的窗口中selectNumber to InsertNumber to Insert单选button。 然后指定您的初始数字和增量,然后点击确定。 它应该写出增加的数字。

注意:这也适用于Multi-editingfunction(在按下Ctrl键的同时select多个位置)。

然而,这并不是大多数人认为有用的灵活性。 记事本+ +很棒,但是如果你想要一个真正强大的编辑器,可以轻松地做这样的事情,我会说使用Vim。

我今天正在寻找相同的function,但不能在Notepad ++中做到这一点。 不过,我们有TextPad来拯救我们。 它为我工作。

在TextPad的replace对话框中,打开regex; 那么你可以尝试更换

 <row id="1"/> 

通过

 <row id="\i"/> 

看看这个链接进一步惊人的替代function的TextPad – http://sublimetext.userecho.com/topic/106519-generate-a-sequence-of-numbers-increment-replace/

由于有限的真实答案,我将分享这个解决方法。 对于像你的例子一样的简单情况,你可以倒退。

由此

 1 2 3 4 5 

\r\nreplace为" />\r\n<row id=" ,您将获得90%的路程

 1" /> <row id="2" /> <row id="3" /> <row id="4" /> <row id="5 

或者是一个类似的方式,你可以用excel /电子表格破解数据。 只需将您的原始数据拆分为列并根据需要操作值即可。

 | <row id=" | 1 | " /> | | <row id=" | 1 | " /> | | <row id=" | 1 | " /> | | <row id=" | 1 | " /> | | <row id=" | 1 | " /> | 

明显的东西,但它可以帮助某人做奇怪的一次性黑客工作,以节省几个关键笔画。

上面提出的解决scheme只有在数据alignment时才能使用
使用PythonScript Notepad ++插件查看链接中的解决scheme,它工作的很棒!

stackoverflow查找/replace,但递增值

http://docs.notepad-plus-plus.org/index.php/Inserting_Variable_Text

Notepad ++配备了一个编辑 – >列“Alt + C”编辑器,它可以以两种不同的方式处理矩形select:Coledit.png插入一些固定的文本,包括当前行和后面的每一行,在插入的列点(又名脱口)。 最初选定的文本保持不变。 如图所示,可以以相同的方式插入一系列的线性数字。 提供起始值和增量。 用零填充左边是一个选项,数字可以以2,8,10或16为底数input – 这也是计算值的显示方式,填充是基于最大的。

(张贴,以防有人可能使用它)。

我正在寻找一个比OP更复杂的问题的解决scheme – 用数字相同的东西来replace每个事件的发生

例如,取代这样的东西:

 <row id="1" /> <row id="2" /> <row id="1" /> <row id="3" /> <row id="1" /> 

这样:

 <row id="2" /> <row id="3" /> <row id="2" /> <row id="4" /> <row id="2" /> 

无法在网上find解决scheme,所以我写了自己的脚本在groovy(有点丑陋,但没有工作):

  /** * <p> Finds words that matches template and increases them by 1. * '_' in word template represents number. * * <p> Eg if template equals 'Row="_"', then: * ALL Row=0 will be replaced by Row="1" * All Row=1 will be replaced by Row="2" * <p> Warning - your find template might not work properly if _ is the last character of it * etc. * <p> Requirments: * - Original text does not contain tepmlate string * - Only numbers in non-disrupted sequence are incremented and replaced * (ie from example below, if Row=4 exists in original text, but Row=3 not, than Row=4 will NOT be * replaced by Row=5) */ def replace_inc(String text, int startingIndex, String findTemplate) { assert findTemplate.contains('_') : 'search template needs to contain "_" placeholder' assert !(findTemplate.replaceFirst('_','').contains('_')) : 'only one "_" placeholder is allowed' assert !text.contains('_____') : 'input text should not contain "______" (5 underscores)' while (true) { findString = findTemplate.replace("_",(startingIndex).toString()) if (!text.contains(findString)) break; replaceString = findTemplate.replace("_", "_____"+(++startingIndex).toString()) text = text.replaceAll(findString, replaceString) } return text.replaceAll("_____","") // get rid of '_____' character } // input findTemplate = 'Row="_"' path = /C:\TEMP\working_copy.txt/ startingIndex = 0 // do stuff f = new File(path) outText = replace_inc(f.text,startingIndex,findTemplate) println "Results \n: " + outText f.withWriter { out -> out.println outText } println "Results written to $f" 

我有超过250行相同的问题,这是我如何做到这一点:

例如 :

 <row id="1" /> <row id="1" /> <row id="1" /> <row id="1" /> <row id="1" /> 

你把光标放在“1”后面,然后你点击alt + shift并且用向下箭头开始下降,直到你到达底线,现在你看到一组select,点击擦除,同时擦除每行上的数字1,然后去Edit -> Column Editor ,select” Number to Insert然后在初始数字段中input1 ,按字段递增1 ,然后选中零号码,然后单击ok

恭喜你,你做到了:)

您可以通过正则expression式和foreach循环使用Powershell,如果您将值存储在文件input.txt中

 $initialNum=1; $increment=1; $tmp = Get-Content input.txt | foreach { $n = [regex]::match($_,'id="(\d+)"').groups[1 ].value; if ($n) {$_ -replace "$n", ([int32]$initialNum+$increment); $increment=$increment+1;} else {$_}; } 

之后,您可以使用$tmp > result.txt将$ tmp存储在文件中。 这不需要数据在列中。