注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

JonRao的博客

PC游戏 VB.NET PC技巧 硬盘维修

 
 
 

日志

 
 

VS2010源代码粘贴到Word里夹带乱码  

2011-05-10 11:57:47|  分类: VB.NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        原本在VS2008中里,选取并复制程式码,在word里贴上时,可保留语法中的不同颜色标记,美观又大方。但到了VS2010的,贴成的RichText格式时中文部分会有夹杂乱码的问题,但贴上为纯文字时则正常。每个中文字后会连着一到两个多余的字符,会变成:'VS2010a?2???D???ê??????Word°a???¨°???ê?

        网上有高手搞定了,我把它翻译成了VB.NET的代码

Imports System.Text.RegularExpressions

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'每個中文字後會連著一到兩個多餘字元

'取得剪貼簿內容

Dim dataObject As IDataObject = Clipboard.GetDataObject()

If dataObject.GetDataPresent(DataFormats.Rtf) Then

'取出RTF格式

Dim rtf As String = TryCast(dataObject.GetData(DataFormats.Rtf), String)

'以Regex.Replace去除多餘字元(註: 不管是否有問題,一律強制處理)

Dim s As String = "\\" & "uinput2(?<uc>\\u-?\d*)\s.." '该死的网易博客如果不用&这个字符串连接符,就会让这个正则表达式对博文生效,屏蔽掉u字母,NND,费了我2小时时间才发现这个大BUG

Dim fixedRtf As String = Regex.Replace(rtf, s, Function(m)

Return m.Groups("uc").Value + "?"

End Function)

'另建新DataObject物件

Dim newDataObject As New DataObject()

'RTF格式用修正後的字串,其餘依原值

For Each t As [String] In dataObject.GetFormats()

newDataObject.SetData(t, If(t = "Rich Text Format", fixedRtf, dataObject.GetData(t)))

Next

'將修正後內容寫入剪貼簿

Clipboard.SetDataObject(newDataObject, True)

End If

End Sub

End Class


原文链接:http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/06/03/fix-vs2010-clipboard-bug.aspx

  评论这张
 
阅读(2413)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018