豆沙色的窗帘好看吗:如何用半角标点替换全角标点?

来源:百度文库 编辑:九乡新闻网 时间:2021/04/17 20:36:46
如何用半角标点替换全角标点?

〔求助〕如何用半角标点替换全角标点?

http://www.pkucn.com/viewthread.php?tid=147918&extra=&page=1

一篇长文档,用的是全角中文标点。因为觉得全角太占空间,想改为半角的标点,竟然发觉Word(2003)无此能力?还是我没找到?尤其是:“双引号。”与:‘单引号。’(如上所示) 

我自以为是Word文档操作高手,亦束手无策。恳请高手指点。谢谢!Word还有很好很顽固的记忆功能,我最早的文档设置为华文中宋字体,后来改为别的字体。现在我试图用英文半角标点替换中文全角标点,竟然发觉引号全改为华文中宋字体!而且引号方向也成大问题!而且在文档中查找华文中宋字体,竟然找不到!手工改为譬如细明体,根本不行!必须先改为如华文隶书,再改为别的字体才行。

查找替换功能中的“区分全角\半角”功能,似乎无用。至少在替换处无能。把Word文档中的全角标点全部改为半角标点,可以试一下宏:

  1.执行“工具”→“宏”→“录制新宏...”,在“宏名”框中输入自己喜欢的名字,比如“PunctuationFull2HalfShape”,确定,将出现一个“录制宏”工具栏,关闭它。

  2.执行“工具”→“宏”→“宏...”,选择“PunctuationFull2HalfShape”,单击“编辑”按钮,打开vba编辑窗口,录入代码结果如下:

  Sub PunctuationFull2HalfShape( )

  '使用前需先选中要替换的区域

  Dim fullshape, halfshape As String, i As Integer '定义fullshape(全角)、halfshape(半角)为字符串型,i为整数型

  fullshape = ",。?“”‘’!:;"

  halfshape = ",.?""''!:;"

  For i = 1 To 10 '循环10次

  With Selection.Find

  .Text = Mid(fullshape, i, 1) 'mid函数:返回文本字符串中从指定位置开始的特定数目的字符,每次取一个标点符号

  .Replacement.Text = Mid(halfshape, i, 1) '将用于替换的相应位置的半角标点符号

  .Format = False '保留替换前的字符格式

  .Execute Replace:=wdReplaceAll '用半角标点替换全角标点

  End With

  Next i

  End Sub

  3.关闭vba编辑窗口,选中要改变标点符号格式的文字区域,执行“工具”→“宏”→“宏...”→“PunctuationFull2HalfShape”。
多谢了!
我的一位朋友告诉我:格式—更改大小写—半角/全角, 就可以实现一次性转换。真的很不错。
改了后,还没看到打印出来的效果,不敢肯定是否好。这一改动,竟减少了30页!全角引号替换成半角引号应该算是比较简单的,笨办法就是先把“”替换成“"”,然后再把“”替换成“"”。

但是问题是:如何把半角直引号替换成全角呢?

比如:"我的"电脑 → 我的电脑

因为前引号和后引号是一样的,所以无法在 Word 中进行简单的替换。Word 中还有一个功能是把直引号替换成弯引号,似乎是不错的功能,可惜这要在输入时才能自动替换,如果是从其他地方拷贝过来的文章,Word 就不会自动替换了。另外即使是替换成弯引号,也是半角的弯引号,并不是全角中文标点

希望高手能替我解惑。在佛典论坛上,有高手贴出以下TextPro批量正则替换表(注意:并非自定义替换表):

\" “
“([^”]{-})“ “\1”

但似乎只能解决双引号配对,不能解决单引号配对。Firefox+IE Tab可直接浏览永硕E盘:中文电脑工作室
Tools > IE Tab Options > http://*.ys168.com/* > Add  谢谢楼上的解答,TextPro 是个软件吧,另外用软件的话就显得不是那么完美了。

EmEditor 中可以通过下面的正则表达式来进行替换,似乎比楼上的简单易懂一点。
查找:"(.*?)"
替换:“\1”
当然,要替换单引号的话也只需要稍微改动一下:
查找:'(.*?)'
替换:‘\1’

在 Word 中,似乎就更麻烦一点了:
在“替换”对话框中点击“更多”,然后再勾选“使用通配符”,输入如下内容:
查找:"*"
替换:“^&”
但是这样一来,替换的结果就是:
"我的"电脑 → “"我的"”电脑
所以还需要再次替换:
查找:"
替换:

还有一种方法是自己编写程序来实现替换:复制内容到剪贴板
代码:
// C# 代码,在 Microsoft Visual Studio .NET 2003 下测试通过

using System.Text.RegularExpressions;

// 替换双引号
String ConvertDoubleQuotes(String input)
{
    return Regex.Replace(input, "\"(?<1>[^\"]*)\"", "“${1}”");
}

// 替换单引号
String ConvertSingleQuotes(String input)
{
    return Regex.Replace(input, "\"(?<1>[^\"]*)\"", "‘${1}’");
}
不过总感觉太麻烦了,不知还有没有更简单的替换方法,最好是用 Windows 自带的工具。

[ 本帖最后由 tantiancai 于 2007-1-9 14:00 编辑 標點中引號的替換,亦不是難事。
WORD中完全可以實現。就是使用:查找-替換 功能。

查找不成問題,關鍵在替換:
替換時,不能簡單地替換成左引號或右引號(單引號或雙引號),必須多加一些符號。如替換成(*:“),這是左引號,(*。”)這是右引號。原因很簡單,程序會自動根據(:)或(。)來確定其後的引號方向。
替換結束後,自然再用 查找替換功能,把不需要的(*:)(*。)刪除掉就可以了。