2016-12-04 62 views
-1

我一直在试图找出一段时间,现在我似乎无法理解。我到处寻找,我仍然无法找到它。记事本++停止替换特定行

我试图用AutoHotKey制作一个自动校正器的字典,我需要用“::”替换每行的开头,并在另一个“::” 这样的行之间: ::togehter::together 现在我有这些大约20,000与无添加“::”但和我在做什么,这是在替换文本框:

Replace:^
With: :: 

现在它工作正常的第一线,但如果我按取代所有原因我不会在替换时点击20,000次,它不仅取代我从哪里到底部,也取决于开始。所以现在每行都有一个新的“::”添加。

所以我需要的是能够告诉替代在哪一行停止而不是每一行。

另外,如果你可以帮我添加“::(字)”后第一个::(拼写错误的单词),这将是一个很大的帮助。

Image for reference

+0

请编辑您的问题并添加一些示例行和预期结果。 – Toto

+0

您可以将需要更换的行集粘贴到新的文件缓冲区中。只在这个新的缓冲区中进行全部替换。替换之后,您将行的子集复制/粘贴回原始文件。只要你的行子集是一个连续的块,这就可以工作。 –

+0

[你如何用Notepad ++在选定的文本中执行查找/替换]可能的重复(http://stackoverflow.com/questions/5110666/how-do-you-perform-find-replace-in-selected-text-with -notepad) –

回答

0

我发现,正则表达式替换,所有的^一些文字,即在每行开始添加一些文本,在记事本++一些版本不工作。我的解决方法是使用^(.)作为搜索字符串,并在替换中包含\1。对于你的情况,替换将是::\1。这里的效果是用::加上第一个字符替换每行的第一个字符。在Notepad ++ v7.1的快速测试中,用::代替^按我的意愿工作。

在进行全部替换之前,应在替换对话框中检查两件事:(1)选择“正则表达式”并(2)“选择中”未被选中。

问题是不清楚如何在输入这两个词被分开,因此假设一个或多个空格或制表符被用于搜索字符串使用是^(\w+)\h+和替换字符串是::\1::

0

此AutoHotkey脚本可能会执行您所需的操作。 它保留不变的行,以'::'开头, 并预先/替换其他文本。您将原始文本复制到剪贴板,运行此脚本,然后将所需的文本放在剪贴板上。 (要创建并运行脚本,请将其复制并粘贴到文本编辑器中,并将其保存为myscriptname.ahk或myscriptname.txt,然后将该文件拖放到AutoHotkey exe文件中;或者,如果将其另存为ahk文件,并安装AutoHotkey,可以双击运行。)AutoHotkey

vText := Clipboard 
vOutput := "" 
VarSetCapacity(vOutput, StrLen(vText)*2*2) 
StringReplace, vText, vText, `r`n, `n, All 
Loop, Parse, vText, `n 
{ 
vTemp := A_LoopField 

if (vTemp = "") 
if (1, vOutput .= "`r`n") 
continue 

if (SubStr(vTemp, 1, 2) = "::") 
if (1, vOutput .= vTemp "`r`n") 
continue 

StringReplace, vTemp, vTemp, %A_Space%, ::, All 
vOutput .= "::" vTemp "`r`n" 
} 
Clipboard := vOutput 
MsgBox done 
Return 
+0

这个脚本是什么语言?提问者如何运行它?他们将如何直接从Notepad ++运行它? – AdrianHHH

+0

公平点,提问者提到'AutoHotkey',但是我会修改我的答案,以使其对他人更有用。 – vafylec