天道酬勤,学无止境

如何比较两个富文本框内容并突出显示已更改的字符?(How to compare two rich text box contents and highlight the characters that are changed?)

问题

我用于阅读2个richtextbox内容的代码如下:

richTextBox1.Text = File.ReadAllText(tfsVersionFilePath);
richTextBox2.Text = File.ReadAllText(dbVersionFilePath);

现在,我需要比较两个富文本框的内容,并突出显示两个富文本框中已更改的字符。 目的是通过c#应用程序获得差异并突出显示as in TFS (比较文件)中的字符。 谢谢。

编辑:

int length = (richTextBox1.Text.Length > richTextBox2.Text.Length) ? richTextBox1.Text.Length : richTextBox2.Text.Length;
for (int i = 0; i < length; i++)
{ 
   if (richTextBox1.Text[i] != richTextBox2.Text[i])
   {
      /* and then start your highlight selection here, 
      this is where some difference between the two rich 
      text boxes begins */

      richTextBox1.Select(i, 1); 
      richTextBox1.SelectionColor = System.Drawing.Color.Yellow; 
      richTextBox1.SelectionBackColor = System.Drawing.Color.Red;
   }
}

从调试中我了解到,执行特定行后,richTextBox1的SelectSelectionColorSelectionBackColor方法指向文本光标,该位置增加到7个位置。 如何保持richTextBox1的光标位置

回答1

首先感谢ArtyomZzz指出了DiffMatchPatch的重要来源!

这是一段代码,单击按钮后,它将在两个RichTextbox中绘制更改的字符。

首先下载diff-match-patchsource。 (!请参见下面的更新!)从zip文件中复制“ DiffMatchPatch.cs”,也将“ COPY”复制到您的项目中,并将cs文件包含在您的项目中。 还将名称空间添加到您的using子句中。

using DiffMatchPatch;

namespace RTF_diff
{
  public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }

    // this is the diff object;
    diff_match_patch DIFF = new diff_match_patch();

    // these are the diffs
    List<Diff> diffs;

    // chunks for formatting the two RTBs:
    List<Chunk> chunklist1; 
    List<Chunk> chunklist2;

    // two color lists:
    Color[] colors1 = new Color[3] { Color.LightGreen, Color.LightSalmon, Color.White };
    Color[] colors2 = new Color[3] { Color.LightSalmon, Color.LightGreen, Color.White };


    public struct Chunk
    {
        public int startpos;
        public int length;
        public Color BackColor;
    }


    private void button1_Click(object sender, EventArgs e)
    {
        diffs = DIFF.diff_main(RTB1.Text, RTB2.Text);
        DIFF.diff_cleanupSemanticLossless(diffs);      // <--- see note !

        chunklist1 = collectChunks(RTB1);
        chunklist2 = collectChunks(RTB2);

        paintChunks(RTB1, chunklist1);
        paintChunks(RTB2, chunklist2);

        RTB1.SelectionLength = 0;
        RTB2.SelectionLength = 0;
    }


    List<Chunk> collectChunks(RichTextBox RTB)
    {
        RTB.Text = "";
        List<Chunk> chunkList = new List<Chunk>();
        foreach (Diff d in diffs)
        {
            if (RTB == RTB2 && d.operation == Operation.DELETE) continue;  // **
            if (RTB == RTB1 && d.operation == Operation.INSERT) continue;  // **

            Chunk ch = new Chunk();
            int length = RTB.TextLength;
            RTB.AppendText(d.text);
            ch.startpos = length;
            ch.length = d.text.Length;
            ch.BackColor = RTB == RTB1 ? colors1[(int)d.operation]
                                       : colors2[(int)d.operation];
            chunkList.Add(ch);
        }
        return chunkList;

    }

    void paintChunks(RichTextBox RTB, List<Chunk> theChunks)
    {
        foreach (Chunk ch in theChunks)
        {
            RTB.Select(ch.startpos, ch.length);
            RTB.SelectionBackColor = ch.BackColor;
        }

    }

  }
}

最初,我试图将更改后的线条整体上以较浅的颜色进行着色。 但是,这需要花费更多的工作,无法完成(为整个行着色,而不是仅对具有内容的部分进行着色),并且一开始就不是您的问题的一部分。

注意:有四种不同的差异后清除方法。 哪种最合适取决于输入和目的。 我建议尝试cleanupSemanticLossless 。 我添加了第三个屏幕截图,显示了此清理的工作方式

这是输出的屏幕截图:原始输出

和新版本之一: 新的屏幕截图

清理后的屏幕截图第三张截图

更新:消息来源似乎已经转移。 这应该有帮助。

回答2

据我了解,问题是:

  • 比较2个文件
  • 显示.net应用程序中文件的差异。

最简单的方法是使用https://github.com/curran/google-diff-match-patch(以前的链接为https://code.google.com/p/google-diff-match-patch/,感谢保罗·科斯塔(Paolo Costa)发表评论)

它可以比较文件(可以设置多个选项)并为您形成Html(带有diff)。 您也可以编写自己的输出逻辑(如果html不适合您)-请参见DiffMatchPatch.diff_prettyHtml(...)方法(非常简单)。

ps

如果(richTextBox1.Text [i]!= richTextBox2.Text [i])

不是用于文件比较的“最佳”方法。 比较复杂。

回答3

只是在这里大声思考,但是另一种方法是:

int length = (richTextBox1.Text.Length > richTextBox2.Text.Length) ? richTextBox1.Text.Length : richTextBox2.Text.Length;
for (int i = 0; i < length; i++)
{ 
   if (richTextBox1.Text[i] != richTextBox2.Text[i])
   {
      /* and then start your highlight selection here, 
      this is where some difference between the two rich 
      text boxes begins */
   }

这将同时遍历两个富文本框并突出显示差异。 听起来可能更像是您要寻找的东西。

使用我从其他答案中发布的链接以及突出显示的内容来帮助您。 这小段代码应有助于进行文本比较。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 带有语法突出显示的UITextView(UITextView with Syntax Highlighting)
    问题 如何在UITextView进行语法突出显示,特别是在iPhone上对Objective-C进行语法突出显示(和检测)? 我对如何执行此操作的一些想法: NSAttributedString 。 现在可在iOS 3.2及更高版本中使用。 但是如何将NSAttributedString放入UITextView中呢? UIWebView 。 用户完成编辑后将其覆盖,并使用CSS样式表为文本着色。 但是,我将如何在UIWebView执行此操作,为它提供文本,然后为其着色呢? 回答1 更新:自从iOS 7和TextKit以来,语法突出显示变得像馅饼一样容易。 在这里寻找介绍(由我提供)。 假设您需要一个可编辑的组件,则没有太多希望。 快速概述,以确保涵盖所有内容: UITextView :仅纯文本,无(公共)方式。 但可编辑。 没有机会更改任何内容,没有机会获得几何图形等。内部使用Web视图。 每个段落都是一个<div> ,由编辑引擎更改。 您可以在其中更改DOm,但这就是所有私有API。 全部为私人,因此别无选择。 UIWebView : html ,因此可以样式化,具有嵌入的图像等。我猜(无需仔细研究)这就是前面提到的Three 20 UI所使用的。 问题:无法编辑。 没有(公开)解决方案。 您可以在没有专用API且没有很多麻烦的情况下获得选择,访问DOM等。
  • 如何以MS Word保留格式和语法高亮显示代码段?(How do you display code snippets in MS Word preserving format and syntax highlighting?)
    问题 有谁知道一种在Microsoft Word文档中显示可保留颜色和格式的代码的方法? 优选地,该方法也将是不引人注目的并且易于更新。 我试图将代码作为常规文本包含在内,这看起来很糟糕,并且在编辑常规文本时会遇到麻烦。 我还尝试将对象(写字板文档和文本框)插入文档,然后将代码放入这些对象中。 该代码看起来更好,并且在编辑其余文本时更容易避免。 但是,这些对象只能跨越一页,这在需要添加几页代码时使编辑成为一场噩梦。 最后,我知道有更好的编辑器/格式可以解决此问题,但是我仍然坚持使用MS word。 回答1 对我来说,这是在word中添加代码的最佳方法: 转到“ Insert选项卡的“ Text部分,单击“ object按钮(在右侧) 选择“ OpenDocument Text ,这将打开一个新的嵌入式Word文档从Visual Studio / Eclipse复制并粘贴您的代码到此嵌入式word页面中保存并关闭 结果看起来非常不错。 这是此方法的优点: 代码保持其原始布局和颜色代码与文档的其余部分分开,好像是图片还是图表拼写错误不会在代码中突出显示(这很酷!) 而且只需要几秒钟。 回答2 下载并安装Notepad ++并执行以下操作: 将您的代码粘贴到窗口中; 从语言菜单中选择编程语言; 选择要复制的文本; 右键单击并选择“插件命令” ->“复制带有语法突出显示的文本” ;
  • 如何在Tkinter文本小部件中突出显示文本(How to highlight text in a tkinter Text widget)
    问题 我想知道如何根据某些模式来更改某些单词和表达式的样式。 我正在使用Tkinter.Text小部件,但不确定如何执行此操作(在文本编辑器中语法高亮显示的想法相同)。 即使这是用于此目的的正确小部件,我也不确定。 回答1 这是用于这些目的的正确小部件。 基本概念是,将属性分配给标签,然后将标签应用于小部件中的文本范围。 您可以使用文本小部件的search命令来找到与您的模式匹配的字符串,这将为您返回足够的信息,将标记应用于匹配的范围。 有关如何将标签应用于文本的示例,请参见我对“高级Tkinter”文本框问题的回答。 这不完全是您想要做的,但它显示了基本概念。 以下是如何扩展Text类以包括突出显示与模式匹配的文本的方法的示例。 在此代码中,模式必须是字符串,不能是已编译的正则表达式。 此外,该模式必须遵守Tcl的正则表达式语法规则。 class CustomText(tk.Text): '''A text widget with a new method, highlight_pattern() example: text = CustomText() text.tag_configure("red", foreground="#ff0000") text.highlight_pattern("this should be red", "red") The highlight
  • 如何删除文本/输入框周围的焦点边框(轮廓)? (Chrome)[重复项](How to remove focus border (outline) around text/input boxes? (Chrome) [duplicate])
    问题 这个问题已经在这里有了答案: 如何删除输入文本元素上的边框突出显示(18个答案) 5年前关闭。 谁能解释一下如何删除文本/输入框周围的橙色或蓝色边框(轮廓)? 我认为只有在Chrome上才会显示输入框处于活动状态。 这是我正在使用的输入CSS: input { background-color: transparent; border: 0px solid; height: 20px; width: 160px; color: #CCC; } 回答1 该边框用于显示该元素已聚焦(即,您可以输入输入内容或使用Enter按下按钮)。 不过,您可以使用outline属性将其删除: textarea:focus, input:focus{ outline: none; } 您可能想添加一些其他方式,以使用户知道哪个元素具有键盘焦点(出于可用性)。 Chrome浏览器还将突出显示其他元素,例如用作模态的DIV。 为了避免突出显示这些元素和所有其他元素,您可以执行以下操作: *:focus { outline: none; } Access️辅助功能警告 请注意,从输入中删除大纲是一种可访问性不良做法。 使用屏幕阅读器的用户将无法看到其指针聚焦的位置。 有关更多信息,请访问a11yproject 回答2 当前的答案不适用于Bootstrap 3.1.1。 这是我必须重写的内容:
  • 如何比较两个(或多个)MSI文件的内容?(How can I compare the content of two (or more) MSI files?)
    问题 我该如何对两个(或多个) MSI文件进行“内容比较”,并查看文件中的实际区别-而不是进行无用的二进制比较? (这显然只会告诉我是否要处理同一文件的副本)。 一些相关的典型问题场景: 我们的构建系统疯狂地吐出了MSI文件,有时我们需要弄清楚不同MSI文件之间存在什么区别(阅读:有所更改,现在部署失败)。 我们从不同位置的同一源编译了MSI文件,其中一些文件无法运行报告System.BadImageFormatException-我们如何调试MSI文件中的差异? (在这里专门针对此错误的答案:应用程序是否依赖于编译该错误的环境?)。 MSI文件可以使用各种工具进行编译,但是对于stackoverflow用户而言,此类文件可能最常使用WiX或Visual Studio Installer项目(免费工具包)创建。 这是一个Q / A风格的问题,主题是比较已编译的MSI文件以确定存在哪些真正的“内容差异”。 回答1 Microsoft Orca :如果已安装Visual Studio,请尝试在“ Program Files (x86)下搜索Orca-x86_en-us.msi ,然后进行安装。 然后在开始菜单中找到Orca。 当前路径: C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86 适当更改版本号 About
  • 微信小程序--留言板
    微信小程序 — — 留言板的实现方式 主要功能点: 富文本的边框可以自动匹配屏幕大小; 显示富文本中输入的字数; 获取富文本中的内容,提交留言; 提交留言后的弹窗; 对应的.wxml内容 注意: 富文本是通过嵌套在表单内的方式,显现出来。 <view data-id="liuyan"> <form bindsubmit="bindFormSubmit"> <textarea class="view-liuyan" minlength="4" maxlength="122" name="textarea" placeholder="请输入留言内容" bindinput="bindInputText"> <text class="currentWordNumber">{{currentWordNumber|0}}/{{max}}</text> </textarea> <button class="send" form-type="submit">提交留言</button> </form> </view> 对应的.wxss内容 注意: 要重写textarea标签选择器,主要就是width属性,否则本文框显示不对。 .view-liuyan { margin: 25rpx; border-style: solid; border-width: 2rpx; border-color:
  • 如何检测文本框的内容已更改(How to detect a textbox's content has changed)
    问题 我想检测何时文本框的内容已更改。 我可以使用keyup方法,但是它也可以检测不会产生字母(如箭头键)的击键。 我想到了使用keyup事件执行此操作的两种方法: 仔细检查所按键的ASCII码是否为字母\退格\删除使用闭包来记住按键之前文本框中的文本,并检查是否已更改。 两者看起来都很麻烦。 回答1 开始观察“输入”事件而不是“改变”事件。 jQuery('#some_text_box').on('input', function() { // do your stuff }); ...这很干净,但可以扩展到: jQuery('#some_text_box').on('input propertychange paste', function() { // do your stuff }); 回答2 在HTML /标准JavaScript中使用onchange事件。 在jQuery中,这是change()事件。 例如: $('element').change(function() { // do something } ); 编辑 阅读一些评论后,该怎么办: $(function() { var content = $('#myContent').val(); $('#myContent').keyup(function() { if ($('#myContent').val()
  • 在MS Access中管理和调试SQL查询(Managing and debugging SQL queries in MS Access)
    问题 MS Access管理原始SQL查询的功能有限:编辑器很糟糕,没有语法突出显示,它将原始SQL重新格式化为一个长字符串,并且您无法插入注释。 调试复杂的SQL查询也很麻烦:要么必须将其拆分为许多较小的查询,当您的模式更改时,这些查询将变得难以管理,或者您最终遇到了一个庞大的查询,这是调试和更新的噩梦。 您如何在MS Access中管理复杂的SQL查询以及如何调试它们? 编辑目前,我主要只是使用Notepad ++进行语法着色,而使用SQL Pretty Printer来重新格式化Access中的原始SQL。 使用外部存储库很有用,但是始终存在使两个版本不同步的风险,并且在Access中尝试查询之前,您仍然必须删除注释。 回答1 为了进行调试,我在一个单独的文本编辑器中对其进行了编辑,使我可以合理地设置其格式。 当我发现需要进行更改时,我在文本编辑器中编辑该版本,然后将其粘贴回Access中,而不用在Access中编辑该版本。 仍然是主要的PITA。 回答2 我有一些VBA中特定于SQL的技巧。 将您的SQL代码放入字符串变量。 我曾经这样做: DoCmd.RunSQL "SELECT ..." 这很难管理。 改为执行以下操作: strSQL = "SELECT ..." DoCmd.RunSQL strSQL 通常,除非您只看到正在运行的内容,否则您无法修复查询。 为此
  • PPT实例虚化图片突出主题的封面页效果
    PPT实例虚化图片突出主题的封面页效果PPT对图片提供一组艺术效果可以直接应用,这一组艺术效果有点类似于PS中的滤镜,而这个PPT实例通过“艺术效果”的虚化命令,然后再叠加一层清楚的图片完成视觉冲击的。第一步:在PPT软件中先插入一个图片,然后调整大小后,看图片的宽与高比例是否合适,如果不合适可以通过【图片工具】—【裁剪】,裁剪目的就是保留图片最想呈现的部分,而且如果有超出的部分也可以通过裁剪去掉。第二步:把裁剪后的图片选定后按住CTRL键拖动复制出来一个,然后对下方图片执行【图片工具】—【格式】—【艺术效果】—【虚化】。http://www.dushuwu.net/xqkan.aspx?newsid=555第三步:执行虚化命令后可以单击下方“艺术效果选项”命令,执行命令后右侧出来设置“设置图片格式”面板,通过半径选项对其进行控制虚化效果的执行程度。第四步:把复制的图片与虚化的图片先对齐重叠显示,然后选定复制后的图片执行“裁剪”命令,这次执行保留图片需要突出的部分,执行后效果如下图。第五步:在PPT虚化的图片上边插入文本框并输入标题文字“学PPT制作就来读书屋OFFICE网”,对PPT中文字中文使用“庞门正道标题体”英文使用“Impact”,对一个文本框中中英文不一样字体,可以通过“字体”对话框进行更改。总结:在使用同等字号时,英文字体会比中文字体显得比较高
  • 使用Vim,最有效的快捷方式是什么?(What is your most productive shortcut with Vim?)
    问题 已锁定。 该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。 它目前不接受新的答案或互动。 我听说过很多关于Vim的利弊。 看来,使用Vim(作为开发人员)应该比使用任何其他编辑器更快。 我正在使用Vim来做一些基本的事情,而我最多只能将Vim的生产率降低10倍。 在谈论速度时,您只需要注意两件事(您可能不太在意速度,但应该注意): 交替使用左右手是使用键盘的最快方法。 第二种方法是永远不要触摸鼠标,以使其尽可能快。 您动动手,抓住鼠标,将其移动并重新带回键盘需要花费很多时间(而且您经常必须查看键盘以确保将手正确地放回正确的位置) 这是两个例子,说明了为什么我对Vim的工作效率低得多。 复制/剪切和粘贴。 我一直都在做。 在所有当代编辑器中,您用左手按Shift ,然后用右手移动光标以选择文本。 然后按Ctrl + C复制,移动光标,然后按Ctrl + V粘贴。 使用Vim太可怕了: yy复制一行(您几乎从不想要整行!) [number xx]yy将xx行复制到缓冲区中。 但是您永远不会确切知道是否选择了想要的东西。 我经常必须先执行[number xx]dd然后u才能撤消! 另一个例子? 搜索并替换。 在PSPad中: Ctrl + f,然后输入要搜索的内容,然后按Enter 。 在Vim中: / ,然后键入要搜索的内容,然后在每个特殊字符前加上\
  • 为什么内容没有被重叠元素的背景覆盖?(Why the content is not covered by the background of an overlapping element?)
    问题 情况如下: body { margin: 0; background: pink; color: #fff; } .box { margin-top: 20px; background: red; } .bottom { text-align: right; background: green; animation: animate 2s infinite alternate linear; } @keyframes animate { from { margin-top: 10px; } to { margin-top: -40px; } } <div class="box"> some content </div> <div class="bottom"> other content </div> 发生了什么? 如您所见,我们有两个div没有任何复杂的样式(简单的背景色)。 我通过应用负margin-top使第二个div与第一个div重叠。 我期望看到一个完全与另一个完全重叠,但事实并非如此。 第二个div在内容和第一个div的背景之间滑动,这对我来说是一个奇怪的行为。 动画与此处无关,我只是使用它来更好地表现行为。 我们可以简单地添加负边距而不使用动画,我们将拥有相同的东西: body { margin: 0; background: pink; color: #fff
  • 何时在脚本标记中需要CDATA节?(When is a CDATA section necessary within a script tag?)
    问题 脚本标记中是否曾经需要CDATA标记?如果需要,何时? 换句话说,这是何时何地: <script type="text/javascript"> //<![CDATA[ ...code... //]]> </script> 对此更可取: <script type="text/javascript"> ...code... </script> 回答1 如果您需要将文档解析为XML(例如,将XHTML页面解释为XML),并且希望能够写i<10和a && b而不是i<10和a && b ;,则CDATA部分是必需的a && b a && b ,因为XHTML会将JavaScript代码解析为解析的字符数据,而不是默认的字符数据。 这不是存储在外部源文件中的脚本的问题,但是对于XHTML中的任何内联JavaScript,您可能都想使用CDATA部分。 请注意,绝不会将许多XHTML页面解析为XML,在这种情况下,这不会成为问题。 有关此主题的出色文章,请参见https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm 回答2 当浏览器将标记视为XML时: <script> <![CDATA[ ...code... ]]> </script>
  • 有没有办法在Google Chrome浏览器中获取XPath?(Is there a way to get the XPath in Google Chrome?)
    问题 我有一个要与YQL一起使用的网页。 但是我需要特定项目的XPath。 我可以在Google Chrome的调试工具区域中看到它,但是看不到复制该XPath的方法。 有没有办法复制完整的XPath? 回答1 您可以在Chrome javascript控制台中使用$x 。 无需扩展。 例如: $x("//img") Web检查器中的搜索框也将接受xpath 回答2 右键单击节点=>“复制XPath” 回答3 以上所有答案都是正确的,这里也是截屏的另一种方式。 从Chrome浏览器: 右键单击您要查找xpath的项目上的“检查” 右键单击控制台上突出显示的区域。 转到复制xpath 回答4 XPath Helper扩展程序可以满足您的需求:https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl 回答5 Google Chrome浏览器提供了开箱即用的内置调试工具“ Chrome DevTools”,其中包括便捷的功能,可以评估或验证XPath / CSS选择器,而无需任何第三方扩展。 这可以通过两种方法来完成: 使用“元素”面板中的搜索功能可以评估XPath / CSS选择器并突出显示DOM中的匹配节点。 在控制台面板中执行令牌$ x(“ some_xpath”)或$$(“ css
  • 什么是Git最好的可视合并工具? [关闭](What's the best visual merge tool for Git? [closed])
    问题 关门了。 这个问题是基于意见的。 它当前不接受答案。 想要改善这个问题吗? 更新问题,以便可以通过编辑此帖子以事实和引用的形式回答。 10个月前关闭。 改善这个问题 在Git中查看和编辑合并的最佳工具是什么? 我想要一个三向合并视图,在单独的面板中有“ mine”,“ theirs”和“ ancestor”,以及第四个“ output”面板。 同样,调用该工具的说明也很棒。 (我仍然没有弄清楚如何以不给我错误的方式启动kdiff3。) 我的操作系统是Ubuntu。 回答1 Meld是一个免费的开源跨平台(UNIX / Linux,OSX,Windows)差异/合并工具。 这是在以下位置进行安装的方法: 的Ubuntu 苹果电脑 Windows:“推荐的Windows Meld版本是最新版本,可以从https://meldmerge.org作为MSI获得” 回答2 您可以配置自己的合并工具以与“ git mergetool ”一起使用。 例子: git config --global merge.tool p4merge git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED' git config --global mergetool.p4merge
  • 什么是HTML字符代码8203?(What's HTML character code 8203?)
    问题 什么字符代码(HTML) ​ ? 我在我的一个jQuery脚本中找到了它,并想知道它是什么。 谢谢。 编辑: 这是它所在的脚本(已添加到末尾,在Firebug中找到了它) <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script type="text/javascript"> var $jnyh = jQuery.noConflict(); $jnyh(function() { $jnyh("#title-nyh").click(function() { $jnyh(".show-hide-nyh").slideDown("slow"); }, function() { if(!$jnyh(this).data('pinned')) $jnyh(".show-hide-nyh").slideUp("slow"); }); $jnyh("#title-nyh").click(function() { $jnyh(this).parent().toggleClass("title-btm-brdr"); $jnyh(this).toggleClass("chev-up-result"); var pin = $jnyh(this).data(
  • WORD技巧
    把文字替换成图片 首先把图片复制到 剪贴板中,然后打开替换对话框,在“查找内容”框中输入将被替换的文字,接着在 “替换为”框中输入“^c”(注意:输入的一定要是半角字符,c要小写),单击替换 即可。说明:“^c”的意思就是指令Word XP以剪贴板中的内容替换“查找内容”框中的内 容。按此原理,“^c”还可替换包括回车符在内的任何可以复制到剪贴板的可视内容,甚至Excel表格。 三招去掉页眉那条横线 1、在页眉中,在“格式”-“边框和底纹”中设置表格和边框为“无”,应用于“段落” 2、同上,只是把边框的颜色设置为白色(其实并没有删的,只是看起来没有了,呵呵) 3、在“样式”栏里把“页眉”换成“正文”就行了——强烈推荐! 会多出--(两个横杠) 这是用户不愿看到的,又要多出一步作删除-- 解决方法:替换时在前引号前加上一个空格 问题就解决了 插入日期和时间的快捷键 Alt+Shift+D:当前日期 Alt+Shift+T:当前时间 批量转换全角字符为半角字符 首先全选。然后“格式”→“更改大小写”,在对话框中先选中“半角”,确定即可 Word启动参数简介 单击“开始→运行”命令,然后输入Word所在路径及参数确定即可运行,如“C:\ PROGRAM FILES \MICROSOFT Office \Office 10\ WINWord.EXE /n”,这些常用的参数及功能如下: /n
  • 从客户端检测到潜在危险的Request.Form值(A potentially dangerous Request.Form value was detected from the client)
    问题 每次用户在Web应用程序的页面中发布包含<或>时,都会引发此异常。 我不想讨论引发异常或崩溃整个Web应用程序的明智性,因为有人在文本框中输入了字符,但是我正在寻找一种优雅的方式来解决这个问题。 捕获异常并显示 发生错误,请返回并重新输入整个表格,但是这次请不要使用< 在我看来还不够专业。 禁用后验证( validateRequest="false" )肯定会避免此错误,但是它将使页面容易受到多种攻击。 理想情况下:当发生包含HTML受限字符的回发时,Form集合中的已发布值将自动进行HTML编码。 因此,我的文本框的.Text属性将是something & lt; html & gt; something & lt; html & gt; 有什么办法可以从处理程序中做到这一点吗? 回答1 我认为您是通过尝试对所有发布的数据进行编码而从错误的角度进行攻击的。 请注意,“ < ”也可能来自其他外部来源,例如数据库字段,配置,文件,提要等。 此外,“ < ”并不是天生的危险。 这仅在特定情况下是危险的:在编写尚未编码为HTML输出的字符串时(由于XSS)。 在其他情况下,不同的子字符串很危险,例如,如果您将用户提供的URL写入链接,则子字符串“ javascript: ”可能很危险。 另一方面,单引号字符在SQL查询中插入字符串时很危险
  • 从Excel中的公式返回空单元格(Return empty cell from formula in Excel)
    问题 我需要从Excel公式返回一个空单元格,但似乎Excel处理空字符串或对空单元格的引用与真正的空单元格不同。 所以本质上我需要这样的东西 =IF(some_condition,EMPTY(),some_value) 我试图做诸如 =IF(some_condition,"",some_value) 和 =IF(some_condition,,some_value) 并假设B1是一个空单元格 =IF(some_condition,B1,some_value) 但我猜这些都不是真正的空单元格,因为它们是公式的结果。 当且仅当满足某些条件时,才有任何方法填充单元格,否则保持单元格真正为空吗? 编辑:按照建议,我试图返回NA(),但是出于我的目的,这也没有用。 有没有办法用VB做到这一点? 编辑:我正在建立一个工作表,从其他工作表中提取数据,该工作表的格式被设置为将数据导入数据库的应用程序的非常特定的要求。 我无权更改此应用程序的实现,并且如果值是“”而不是实际为空,则它将失败。 回答1 然后,您将必须使用VBA 。 您将遍历范围内的单元格,测试条件,并在它们匹配时删除内容。 就像是: For Each cell in SomeRange If (cell.value = SomeTest) Then cell.ClearContents Next 回答2
  • git diff-向我显示行尾更改吗?(git diff - show me line ending changes?)
    问题 我的编辑器正在更改源文件的行尾。 当我执行git diff ,我看到同一行两次-一次用-和一次用+ -没有明显的区别。 我如何获得git diff来告诉我此更改实际上是什么? 回答1 首先,请确保您使用的是彩色输出(例如git diff --color ),并且已使用(例如)启用了空白突出显示 git config color.diff.whitespace "red reverse" 但是,这可能并非在所有情况下都可行,因为git似乎并未突出显示已删除行的尾随空格。 要查看已删除的空格,只需使用 git diff -R 将空格放在比较的“添加”侧,并在此突出显示。 有关更多详细信息,请参见此SO问题的答案。 回答2 您可以使用以下命令查看行尾差异。 git diff | cat -v 然后,对于CRLF(DOS)结尾,将打印“ ^ M”,对于LF(Unix)结尾,则不打印任何内容。 显然git diff做对了,打印CR和LF字符以结束CRLF。 但是因为CR被控制台占用,所以我们看不到它。 通过使用cat -v,我们可以使其可见。 回答3 观察空格变化的一种方法是使用 git diff --color --word-diff-regex=. 这凸显了所有空白改变处处线。 删除的空格包装在[-和-] ,添加的空白包装在{+和+} 。 或者,如亚历克斯(Alex)所建议 git
  • 在.NET中,“ for”或“ foreach”哪个循环运行得更快?(In .NET, which loop runs faster, 'for' or 'foreach'?)
    问题 在C#/ VB.NET / .NET中, for或foreach哪个循环运行得更快? 自从我很早以前就读过for循环比foreach循环的运行速度更快以来,我就认为它适用于所有集合,通用集合,所有数组等。 我搜寻了Google并发现了几篇文章,但其中大多数没有定论(阅读文章评论)且开放式。 理想的情况是列出每个方案,并为它们提供最佳解决方案。 例如(仅作为示例): 对于迭代1000+字符串数组- for好过foreach 用于遍历IList (非通用)字符串foreach比for更好 在网上找到了一些相同的参考文献: 伊曼纽尔·尚查(Emmanuel Schanzer)的原创宏伟旧文章 CodeProject FOREACH与。 为了博客-进行或不进行,这是一个问题 ASP.NET论坛-NET 1.1 C#for vs foreach [编辑] 除了可读性之外,我对事实和数据真的很感兴趣。 在某些应用程序中,压缩性能优化的最后一刻确实很重要。 回答1 Patrick Smacchia上个月在博客上发表了以下结论: List上的for循环比List上的foreach循环便宜2倍多。 在数组上循环比在List上循环便宜大约2倍。 结果,使用for循环在数组上的循环比使用foreach循环在List上的循环便宜5倍(我相信,这是我们所有人所做的)。 回答2 首先,对德米特里