编程乐趣:一个强制换行的小方法

原创 2012年09月13日 18:42:28

前段时间做了个功能,用打印机打印内容。打印是这种格式:
项目名:内容;
由于打印的使用的那种纸宽度有限,所以要考虑到换行于是写了个给字符串换行的功能,试了一下貌似还能用,分享分享,希望能有所帮助。

     /// <summary>
        /// 格式化字符格式
        /// </summary>
        /// <param name="printContent">内容</param>
        /// <param name="itemName">题目</param>
        /// <param name="lineLength">每行长度</param>
        /// <returns></returns>
        private static string FormatPrintLine(string printContent, string itemName, int lineLength)
        {
            List<string> contentRows = new List<string>();

            string formathContent = string.Empty;

            if (printContent.Length <= lineLength)
            {
                return itemName + printContent;
            }

            int index = 0;

            string space = string.Empty;

            for (int i = 0; i < itemName.Length; i++)
            {
                Match match = new Regex(@"[\u4E00-\u9FA5]|[\uFE30-\uFFA0]", RegexOptions.IgnoreCase).Match(itemName[i].ToString());

                space += match.Success ? "  " : " ";//中文占2字符
            }

            do
            {
                if (contentRows.Count > 0)
                {
                    if (((printContent.Length - (contentRows.Count * lineLength))) / lineLength > 0)
                    {
                        contentRows.Add(space + printContent.Substring(contentRows.Count * lineLength, lineLength) + Environment.NewLine);
                    }
                    else
                    {
                        contentRows.Add(space + printContent.Substring(contentRows.Count * lineLength, printContent.Length -

                            (contentRows.Count * lineLength)) + Environment.NewLine);
                    }
                }
                else
                {
                    contentRows.Add(itemName + printContent.Substring(0, lineLength) + Environment.NewLine);
                }

                index += lineLength;

            } while (index < printContent.Length);

            for (int i = 0; i < contentRows.Count; i++)
            {
                formathContent += contentRows[i];
            }

            return formathContent;
        }

调用:

 static void Main(string[] args)
        {
            string itemName = "内容:";

            string content = @" 巴西国家队昨天打进的中国国家队的所有进球完全是非法的、无效的,丝毫改变不了中国球员实力超群的事实,"+
                " 丝毫改变不了中国队在国际足坛的霸主地位。中国球员强烈敦促巴西国家队立即停止一切损害中国球门的行为,如果巴西国家队一意孤行,"+
                "由此在场上中国球员所造成的一切严重后果只能由巴西国家队承担。";

            string result = FormatPrintLine(content,itemName,20);

            Console.WriteLine(result);

            Console.ReadKey();
        }

效果:

 

代码下载:http://download.csdn.net/detail/yysyangyangyangshan/4568386

版权声明:本文为博主原创文章,未经博主允许不得转载。

导出excel时需要在单元格进行强制换行2003与2007方法一样

最近在做导出excel时需要在单元格进行强制换行,查找资料,总结如下: 自动换行的设置: [html] view plain copy   HS...

DIV布局强制英文换行(div英文不怎么给力啊~ 只有用别的方法啦)

强制不换行div{white-space:nowrap;}自动换行div{word-wrap: break-word;word-break: normal;}强制英文单词断行div{word-brea...

firefox,IE 都兼容字符强制换行

  • 2008年10月24日 16:16
  • 823B
  • 下载

编程乐趣:身份证号码验证的方法

随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很简单。主要注意的是,目前的身份证分为16和18位,然后分别验证校验位,省份,生日即可。...

Html+CSS 文本的强制换行

作为一个成长的菜鸟,总是不断遇到各种问题,今天博主遇到了一个问题。 对于一般的div 自要设置了width; 如果容器里面的文字过多,则文章就会自动换行, 但是如果输入连续的英文字符,则设置的wi...

CSS实现强制换行-------Day 78

css自动换行的三种方法,效果皆不相同,什么样的场合,我们该用哪个呢

CSS截字符串,表格英文强制换行

word-break:break-all,英文强制换行,word-wrap : normal | break-word 取值:normal  : 默认值。允许内容顶开指定的容器边界 break-wo...
  • god2030
  • god2030
  • 2016年04月13日 09:40
  • 591

Css:强制换行

css 自动换行 强制换行属性,在实际应用中,如果不强制换行会导致页面变形很难看,所以用下面的方法,即可解决此类问题。 语法: word-wrap : normal | break-word 取值: ...
  • pgbiao
  • pgbiao
  • 2011年04月20日 15:18
  • 247

div+css强制(不)换行

1、强制不换行,同时以省略号结尾。你好朋友朋友朋友我为什么不能看到效果啊2、css自动换行div{ word-wrap: break-word; word-break: normal; }3、css强...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编程乐趣:一个强制换行的小方法
举报原因:
原因补充:

(最多只允许输入30个字)