字符串处理,仿古书竖排版
对一段古文,进行逆序、断句,简繁转换,标点符号转换,根据设定的行列数输出为仿线装书的竖排格式,纯属个人爱好,也欢迎同好者一起交流。
private void button4_Click(object sender, EventArgs e){richTextBox2.Text = "";richTextBox2.RightToLeft = RightToLeft.Yes;string strChange = jfChange(richTextBox1.Text.Trim(), "繁体");strChange = Regex.Replace(strChange, @"\s", ""); //去除原文中的空格,回车换行,制表符等//strChange.Replace("“", "﹃");strChange = Regex.Replace(strChange, ":“", "﹃");//strChange.Replace("”", "﹄");strChange = Regex.Replace(strChange, "”", "﹄");strChange = Regex.Replace(strChange, "《", "︽");strChange = Regex.Replace(strChange, "》", "︾");int totalChars = strChange.Length; //总的字符数int charsPerCol = Convert.ToInt32(numericUpDown1.Value); //charsPerCol为每列字符数(含标点符号)int cols = Convert.ToInt32(numericUpDown2.Value); //cols为竖排文本的列数int charsPerPage = charsPerCol * cols;char fullSpace = Microsoft.VisualBasic.Strings.ChrW(12288); //半角空格是32,全角空格是12288if (totalChars <= charsPerPage){if (totalChars < charsPerPage){strChange = strChange.PadRight(charsPerPage, fullSpace); //不足每页字数,用全角空格填充不足部分}string output = getwordsHtoV(strChange, charsPerCol, cols);richTextBox2.Text = output;}else{List<string> outputList = new List<string>();int outputPages = (totalChars % charsPerPage == 0) ? totalChars / charsPerPage : totalChars / charsPerPage + 1; //判断出分页数if (totalChars < charsPerPage * outputPages){strChange = strChange.PadRight(charsPerPage * outputPages, fullSpace); //如果字符数不足所有分页的字符数,用全角空格补齐}for (int i = 0; i < outputPages; i++){outputList.Add(strChange.Substring(i*charsPerPage, charsPerPage));}string output = string.Empty;foreach (string perPage in outputList){output += getwordsHtoV(perPage, charsPerCol, cols);}richTextBox2.Text = output;}}public string getwordsHtoV(string source,int charsPerCol,int cols){List<string> wordList = new List<string>();//char fullSpace = Microsoft.VisualBasic.Strings.ChrW(12288); //半角空格是32,全角空格是12288string result = string.Empty;if (source.Length > charsPerCol * cols){result = string.Format("警告,待转换字符数{0}超出设定的行数{1}和列数{2}!",source.Length,charsPerCol,cols);}else{for (int i = 1; i <=cols; i++){ string cTemp = source.Substring(charsPerCol * (i - 1), charsPerCol);wordList.Add(cTemp);}wordList.Reverse(); //将List倒序,这样文字可以从右往左输出result = createHead(cols);result += System.Environment.NewLine;for (int i = 0; i < charsPerCol; i++){StringBuilder sb = new StringBuilder();foreach (string cTemp in wordList){sb.Append("│");sb.Append(cTemp.Substring(i, 1));}result+=sb.ToString() + "│"+System.Environment.NewLine; }result+= createFoot(cols);result+= System.Environment.NewLine;}return result;}
字符串处理,仿古书竖排版相关推荐
- 汉语拼音大全(竖排版)
共收录411个: a ai an ang ao ba bai ban bang bao bei ben beng bi bian biao bie bin bing bo bu ba bai ban ...
- PS-文字如何竖排版
单击文字输入工具"T"按钮,点住鼠标左键不要松手,会在"T"按钮的右边显示出其它形式的文字工具,拖动鼠标指向"直排文字"工具就可以了.
- 《Python程序设计开发宝典》全面上架(新书超低价优惠+转发积攒送书)
活动详情 1.转发积攒赠书.自2017年8月18日起,至2017年8月21日结束,为期4天,连续4天转发本文到到微信朋友圈,积攒总数超过200个以上,2017年8月22日上午12点之前将朋友圈截图发送 ...
- python基础知识笔记简书_Python基础学习笔记
Python貌似有点火热,上手还是比较简单的,自己找了个教程也偷偷的学习一下,扒了一下网上的图片和数据,感觉并不是很难呀(不过之前换电脑,代码丢了,有点可惜,不过网上教程一抓一大把,随便看看也能扒一些 ...
- Java最佳实践–字符串性能和精确字符串匹配
在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. 此外,我们将提供我们自己的用 ...
- 字符串:你看的懂的KMP算法(带验证)
前言 KMP算法可以说说许多学习算法的同学的第一道坎,要么是领会不到KMP算法的思想,要么是知道思想写不出代码,网上各种查找.关于算法的书籍上也都有KMP算法的实现,可为啥自己写不出来呢?博主看得大话 ...
- ECMAScript6 模版字符串
三.模版字符串 JavaScript's strings have been fairly limited when compared to those in other languages. Tem ...
- 《高性能Linux服务器构建实战Ⅱ》一书纠错汇总(12月30日更新)
以下是<高性能Linux服务器构建实战Ⅱ>一书的编写或者排版错误说明,如果发现有相关错误信息,我会陆续在这里发布出来,也希望大家能把自己发现的错误留言给我,谢谢读者们的支持!你们的支持是我 ...
- 哪些人会看作业指导书?作业指导书怎样才能发挥作用?
一般人普遍人为,作业指导书就是给操作人员看的.其实不然,那么哪些人会看作业指导书?大致可以分为: 第一类:新到工作岗位的员工.其中包括新进员工和新转岗位的员工,他们都会在师傅或领班组长的带领指导下,先 ...
- 小红书文案怎么编辑制作?小红书上的文案怎么做的?
其实我们平时翻看小红书上的文案就会发现,小红书文案本身具有极强的社交属性,不同于其他平台的文案,小红书文案还是有着自己本身的特点的,我们能从小红书文案中总结出一些规律来,按着这个规律写总归是没错的.小 ...
最新文章
- 让PyTorch训练速度更快,你需要掌握这17种方法
- Mac上搭建直播服务器Nginx+rtmp
- Javascript 中 apply、call、bind
- URAL 1635 Mnemonics and Palindromes
- 关于mvc、mvp和mvvm的理解
- [智能架构系列]什么是Buddy智能开发框架
- 一句python,一句R︱列表、元组、字典、数据类型、自定义模块导入(格式、去重)
- JavaScript入门之Canvas(一): 2D Context
- python shell 方向键不可用
- [python]python 动态调用模块类方法
- 全文检索(LuceneSolr)
- 去除DataTable重得记录(net 2.0,不支持Linq)
- Axure9修改汉化包解决”用例“中”匹配所有“异常的问题
- 知识图谱构建技术综述与实践
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- java文件上传判重姿势浅谈
- 注册商标流程需要材料
- 企业微信老是服务器异常,添加好友提示”操作异常”,企业微信需要养号吗?...
- 你是怎样毁掉自己的?
- SQL Server之创建数据库和表