1:         /// <summary>
  2:         /// 两边追加标志
  3:         /// </summary>
  4:         /// <param name="syntax"></param>
  5:         public void ToggleSymmetricalMarkdownFormatting(string syntax)
  6:         {
  7:             int selectionLength = this.textEditor.SelectionLength;
  8:             int selectionStart = this.textEditor.SelectionStart;
  9:             if (selectionLength == 0 && selectionStart + syntax.Length <= this.textEditor.Text.Length)
 10:             {
 11:                 string text = this.textEditor.Document.GetText(selectionStart, syntax.Length);
 12:                 if (text == syntax)
 13:                 {
 14:                     this.textEditor.SelectionStart += syntax.Length;
 15:                     return;
 16:                 }
 17:             }
 18:             char[] array = syntax.ToCharArray();
 19:             Array.Reverse(array);
 20:             string text2 = new string(array);
 21:             int num = this.textEditor.SelectionLength;
 22:             int num2 = this.textEditor.SelectionStart;
 23:             if (num2 >= syntax.Length)
 24:             {
 25:                 num2 -= syntax.Length;
 26:                 num += syntax.Length;
 27:             }
 28:             DocumentLine lineByOffset = this.textEditor.Document.GetLineByOffset(this.textEditor.CaretOffset);
 29:             if (num2 + num + syntax.Length <= lineByOffset.EndOffset)
 30:             {
 31:                 num += syntax.Length;
 32:             }
 33:             string text3 = "";
 34:             if (num > 0)
 35:             {
 36:                 text3 = this.textEditor.Document.GetText(num2, num);
 37:             }
 38:             Match match = Regex.Match(text3, string.Concat(new string[]
 39:           {
 40:             "^",
 41:             Regex.Escape(syntax),
 42:             "(.*)",
 43:             Regex.Escape(text2),
 44:             "$"
 45:           }), RegexOptions.Singleline);
 46:             bool success = match.Success;
 47:             if (success)
 48:             {
 49:                 text3 = match.Groups[1].Value;
 50:                 this.textEditor.SelectionStart = num2;
 51:                 this.textEditor.SelectionLength = num;
 52:                 this.textEditor.SelectedText = text3;
 53:                 return;
 54:             }
 55:             text3 = syntax + this.textEditor.SelectedText + text2;
 56:             this.textEditor.SelectedText = text3;
 57:             this.textEditor.SelectionLength -= syntax.Length * 2;
 58:             this.textEditor.SelectionStart += syntax.Length;
 59:         }
  1:         /// <summary>
  2:         /// 左边添加前缀
  3:         /// </summary>
  4:         /// <param name="markdownSyntaxToApply"></param>
  5:         public void ToggleAsymmetricMarkdownFormatting(string markdownSyntaxToApply)
  6:         {
  7:             bool flag = this.textEditor.SelectedText == this.textEditor.Document.GetText(this.CurrentLine);
  8:             bool flag2 = this.textEditor.SelectedText.Contains(Environment.NewLine);
  9:             bool flag3 = this.textEditor.CaretOffset == this.CurrentLine.Offset;
 10:             if ((!flag3 || !flag) && !flag2)
 11:             {
 12:                 this.textEditor.SelectedText = Environment.NewLine + this.textEditor.SelectedText;
 13:                 this.textEditor.SelectionLength -= Environment.NewLine.Length;
 14:                 this.textEditor.SelectionStart += Environment.NewLine.Length;
 15:             }
 16:             if (this.textEditor.SelectionLength > 0)
 17:             {
 18:                 string selectedText = this.textEditor.SelectedText;
 19:                 string selectedText2;
 20:                 if (selectedText.Contains(markdownSyntaxToApply))
 21:                 {
 22:                     selectedText2 = selectedText.Replace(markdownSyntaxToApply, "");
 23:                 }
 24:                 else
 25:                 {
 26:                     selectedText2 = markdownSyntaxToApply + selectedText.Replace(Environment.NewLine, Environment.NewLine + markdownSyntaxToApply);
 27:                 }
 28:                 this.textEditor.SelectedText = selectedText2;
 29:                 return;
 30:             }
 31:             DocumentLine lineByOffset = this.textEditor.Document.GetLineByOffset(this.textEditor.CaretOffset);
 32:             string text = string.Empty;
 33:             if (!(lineByOffset.Length == 0))
 34:             {
 35:                 text = Environment.NewLine;
 36:             }
 37:             this.textEditor.SelectedText = text + markdownSyntaxToApply;
 38:             this.textEditor.SelectionLength = 0;
 39:             this.textEditor.SelectionStart += markdownSyntaxToApply.Length + text.Length;
 40:         }
 41:         public DocumentLine CurrentLine
 42:         {
 43:             get
 44:             {
 45:                 return this.textEditor.Document.GetLineByOffset(this.textEditor.CaretOffset);
 46:             }
 47:         }
 48: 

AvalonEdit 对于选定的文本添加前缀和后缀的更多相关文章

  1. excel给一列数据添加前缀和后缀

    1.选中一列单元格后设置单元格格式,在自定义中输入-----“前缀”@(前缀为需要添加的内容) 输入----@“后缀” 2.字符串拼接:“前缀”&B1,B1&“后缀”

  2. Xcode常用技巧(2)-使Xcode在创建类时自动添加前缀

    在Xcode5之前的版本中,Xcode在新建项目时,会要求为一个类指定一个前缀,这样方便我们区分相同名字的类.而从Xcode6开始,由于Swift增加了命名空间的关系,Xcode在新建项目时,不会再要 ...

  3. 在Navicat 中给Mysql中的某字段添加前缀00

    第一次分享心得,希望大家多多关注. 我遇到的情况是这样的,在Navicat中某表的varchar字段内容长度不够5的在内容前面添加‘0’:如字段内容是 101 我就要改成00101: 其中有2个难点: ...

  4. css之为文本添加线性渐变和外描边

    css之为文本添加线性渐变和外描边  一.效果: 描边:描边+渐变: 二.描边: api:text-stroke 问题:text-stroke的描边是居中描边,无法直接设置外描边 解决:在before ...

  5. iOS: 在Xcode7系列中给类名自动添加前缀

    添加前缀原因: 我个人还是很喜欢 Class Prefix 的,因为: 1. 使用它几乎不增加什么成本, 2. 不使用它可能会造成安全隐患, 3. 它能够以直接的方式编码一些信息以供未来的回溯, 4. ...

  6. 用Emmet写CSS3属性会自动添加前缀

    CSS3的很多属性都包含浏览器厂商前缀,用Emmet写CSS3属性会自动添加前缀,比如输入trs 会展开为: -webkit-transition: prop time; -moz-transitio ...

  7. 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  8. webpack css文件编译、自动添加前缀、剥离

    1.css文件编译 webpack默认只能编译js文件,引入css需要loader支持 // css文件写入js中 npm i style-loader -D // css文件loader npm i ...

  9. Makefile中的$(addprefix),添加前缀,指定目标生成目录

    先给大家看段Makefile的代码吧: INCLUDE_DIR=usr/java/jdk1..0_25/include \ usr/java/jdk1..0_25/include/linux INCL ...

随机推荐

  1. 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】

    2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ...

  2. java socket报文通信(三)java对象和xml格式文件的相互转换

    前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...

  3. ubuntu11.10(TQ210)下移植boa服务器

    平台:ubuntu11.10 一.下载源码包www.boa.org   boa-0.94.13.tar.gz 二.解压,在其src目录下生产makefile #tar xvfz  boa-0.94.1 ...

  4. Canvas前端游戏开发——FlappyBird详解

    一直想自己做点小东西,直到最近看了本<HTML5游戏开发>,才了解游戏开发中的一点点入门知识. 本篇就针对学习的几个样例,自己动手实践,做了个FlappyBird,源码共享在度盘;也可以参 ...

  5. centos 6.5网卡dhcp不能获得网关

    环境:vmware +centos6.5 添加两个虚拟网卡.一个自动获取ip(用于上网-桥接) 一个手动(与主机通信用于ssh-NAT).  因为自已手动改了一下ifcfg-eth0里面的HWADDR ...

  6. JS表单验证类HTML代码实例

    以前用的比较多的一个JS表单验证类,对于个人来说已经够用了,有兴趣的可以在此基础上扩展成ajax版本.本表单验证类囊括了密码验证.英文4~10个 字符验证. 中文非空验证.大于10小于100的数字.浮 ...

  7. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  8. d039: 点的位置

    内容: 已知一平面直角坐标系中正方形的左上(-2,2)和右下(2,-2)的顶点坐标,,当给一个点的坐标,判断点和正方形的关系,在正方形内(含边上)输出True ,否则输出 False 输入说明: 一行 ...

  9. 成功启动了Apache却没有启动apache服务器

    原因没有用管理员身份运行...

  10. win7 64位 python3.4&opencv3.0配置安装

    参考:http://blog.csdn.net/sun7_she/article/details/50051249 一.安装Python 下载Python3.4.2 网址:https://www.py ...