# 求指导AutoHotkey脚本

**URL:** <https://forum.freemdict.com/t/topic/18112>\
**Category:** 软件经验交流展望\
**Created:** [2022 年12 月 26 日 07:04 UTC](https://forum.freemdict.com/t/topic/18112 "2022-12-26T07:04:16Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

作者： ![freeeMdict](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/45deac/32.png) [@freeeMdict](https://forum.freemdict.com/u/freeeMdict)\
发布日期： [2022 年12 月 26 日 07:04 UTC](https://forum.freemdict.com/t/topic/18112/1 "2022-12-26T07:04:16Z")

</div>

目前脚本如下

```auto
Loop
{
    StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
    if ErrorLevel = 0 ;全部替换完，退出循环
        break
}
Loop
{
    StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
    if ErrorLevel = 0
    break
}

```

目的是把分行符换成英文空格，然后把连续的空格换成一个空格。  
奇妙的是，把英语单词的-也处理得很好。

 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/f/e/fe862b3b58aadb1371bc44f6bb4382914a8828c3.png)  
但不可避免复制中文的时候 也会有空格，这个是不想要的，请各位朋友指导一二，如何判断在两个中文之间换行的时候直接去掉分行符

```auto
StringReplace, clipboard,clipboard, `r`n,, UseErrorLevel

```

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年12 月 26 日 08:22 UTC](https://forum.freemdict.com/t/topic/18112/2 "2022-12-26T08:22:32Z")

</div>

AHK的一些规矩奇奇怪怪看着都头痛，实在要用可以去[它的论坛](https://www.autohotkey.com/boards/viewforum.php?f=76)问，如果不麻烦半小时内就能解决

或者参考一下  
[RegExMatch()](https://www.autohotkey.com/docs/v1/lib/RegExMatch.htm)  
[RegExReplace()](https://www.autohotkey.com/docs/v1/lib/RegExReplace.htm)

---

<div class="post-metadata">

作者： ![freeeMdict](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/45deac/32.png) [@freeeMdict](https://forum.freemdict.com/u/freeeMdict)\
发布日期： [2022 年12 月 26 日 08:52 UTC](https://forum.freemdict.com/t/topic/18112/3 "2022-12-26T08:52:26Z")

</div>

谢谢您的建议 还脚本还是非常好用的 以前的那个取词脚本不能跨行复制 稍微改一下跨行复制 我在脚本后面继续加了一个鼠标手势 搭配右键下滑粘贴 搭配其他软件快捷键 实现鼠标手势截图、OCR 、、

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年12 月 26 日 09:02 UTC](https://forum.freemdict.com/t/topic/18112/4 "2022-12-26T09:02:34Z")

</div>

需要的时候的确少不了它，但是稍微复杂点的象我一年写不了2、3个，都是临时抱抱佛脚

---

<div class="post-metadata">

作者： ![freeeMdict](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/45deac/32.png) [@freeeMdict](https://forum.freemdict.com/u/freeeMdict)\
发布日期： [2022 年12 月 26 日 11:28 UTC](https://forum.freemdict.com/t/topic/18112/5 "2022-12-26T11:28:57Z")

</div>

> **[正则表达式快速参考 | AutoHotkey](https://wyagd001.github.io/zh-cn/docs/misc/RegEx-QuickRef.htm)**
>
> This page covers options, commonly used symbols and syntax which can be used inside a regular expression.

非常感谢

---

<div class="post-metadata">

作者： ![freeeMdict](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/45deac/32.png) [@freeeMdict](https://forum.freemdict.com/u/freeeMdict)\
发布日期： [2022 年12 月 26 日 12:20 UTC](https://forum.freemdict.com/t/topic/18112/6 "2022-12-26T12:20:45Z")

</div>

继续往后加一句这个  
RegExReplace(“非常 感谢你 “, “([一-龥])([[:space:]])([一-龥])(.\*)”,”$1$3$4”)  
请问一下，怎么把粘贴板的东西放到非常感谢你那里去

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年12 月 26 日 12:53 UTC](https://forum.freemdict.com/t/topic/18112/7 "2022-12-26T12:53:39Z")

</div>

试试这个看有没有用

```auto
LWin::
   clipboard := RegExReplace(clipboard, "(\p{Han}) ", "$1")
   Msgbox, %clipboard%
return

```

---

<div class="post-metadata">

作者： ![freeeMdict](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/45deac/32.png) [@freeeMdict](https://forum.freemdict.com/u/freeeMdict)\
发布日期： [2022 年12 月 26 日 13:05 UTC](https://forum.freemdict.com/t/topic/18112/8 "2022-12-26T13:05:26Z")

</div>

```auto
Loop
{
    StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
    if ErrorLevel = 0 ;全部替换完，退出循环
        break
}
Loop
{
    StringReplace, clipboard,clipboard, {TABLE},%A_SPACE%, UseErrorLevel
    if ErrorLevel = 0 ;全部替换完，退出循环
        break
}
Loop
{
    StringReplace, ,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
    if ErrorLevel = 0
    break
}

clipboard := RegExReplace(clipboard, "([一-龥])([[:space:]])([一-龥])(.*)","$1$3$4")

```

您这个我没明白，没试出来怎么用，我这个思路是这样的，加一个正则，如果汉字与汉字之间有空格，就丢掉空格，表达式也是对的，就是把clipboard引用进去运行的时候，会提示，

```auto
Error at line 85.
Line Text: StringReplace,
Error: "StringReplace" requires that parameter #1 be non-blank
The program will exit.

```

百度不到怎么解了

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年12 月 26 日 13:07 UTC](https://forum.freemdict.com/t/topic/18112/9 "2022-12-26T13:07:24Z")

</div>

![Image](https://forumcdn.freemdict.com/uploads/default/original/3X/1/0/10868625fbfc145c1d4a5980411e927924e3a014.png)

是不是多一个逗号？

---

<div class="post-metadata">

作者： ![freeeMdict](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/45deac/32.png) [@freeeMdict](https://forum.freemdict.com/u/freeeMdict)\
发布日期： [2022 年12 月 26 日 13:09 UTC](https://forum.freemdict.com/t/topic/18112/10 "2022-12-26T13:09:58Z")

</div>

嗯嗯，真的我一直盯着下面看了，

 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/b/6/b66c68f5f08fe76bde3f23f1233d2f67c49626c0.png)  
原来85行在上面 哈哈哈哈，太感谢你了，为我以后做PPT节约了大量的时间
