A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 甘斌斌 中级黑马   /  2013-6-16 07:38  /  1751 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开。
每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10。
如果超过10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。

不大明白这题的意思,同学们帮帮忙。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

6 个回复

倒序浏览
  1.             string[] lines = System.IO.File.ReadAllLines(@"F:\1.txt", Encoding.Default);//找到文件

  2.             for (int i = 0; i < lines.Length; i++)
  3.             {
  4.                 //移除每行中以空格分割后的多余空格
  5.                 string[] line = lines[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
  6.                 string title = line[0];//存储标题
  7.                 string name = line[1];//存储姓名

  8.                 if (title.Length > 10)
  9.                 {
  10.                     title = title.Substring(0, 8) + "...";
  11.                 }

  12.                 Console.WriteLine("{0}|{1}", title, name);
  13.             }

  14.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
很简单啊。。首先读取文本文件,在读的过程中去掉空格,同时判断标题长度(超过10的截取并加“……”),然后再添加竖线即可,最后输出。
回复 使用道具 举报
string[] strs = System.IO.File.ReadAllLines(文本路径,Encoding.Default); //读取文本,并将内容赋值给数组strs
foreach (string str in strs)           //用foreach遍历数组中的元素
{
  string[] line = str.Split(" " , StringSplitOptions.RemoveEmptyEntries); //将str用" "分割,自动清除空字符
string title = line[0];//存储标题
string name = line[1];//存储姓名
if (title.Length > 10) //判断标题长度
{
title = title.Substring(0, 8) + "...";
  }
Console.WriteLine("{0}|{1}", title, name);
}
  Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace test4
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个以书名为键作者为值得字典集合
            Dictionary<string, string> bookDit = new Dictionary<string, string>();

            //用默认的编码方式将本地的数目清单读出来存放到字符串str中
            string str = File.ReadAllText(@"F:\VS\VS08\黑马入学测试\test4\books.txt", Encoding.Default);

            //输出文本文件中的原始内容
            Console.WriteLine("文本文件中的原始内容如下:");
            Console.WriteLine(str);
            Console.Write("--------------------------------------------------------------------------------");
            Console.WriteLine("经过处理后的文本文件中的内容如下:");

            //对字符串用空格、\n、\r进行切割并且去掉切割得到的空子字符串
            string [] splictArr = str.Split(new char[] {' ','\n','\r'}, StringSplitOptions.RemoveEmptyEntries);

            //将书名作为键作者作为值添加到字典集合中
            for (int i = 0; i < splictArr.Length; i=i+2)
            {
                bookDit.Add(splictArr[i], splictArr[i + 1]);
            }

            //遍历字典集合中的键
            foreach(string title in bookDit.Keys)
            {
                //当键(书名)的长度不超过10时,输出在书名和作者的名字(书名和作者之间用一个竖线作为分隔)
                if (title.Length < 10)
                {
                    Console.WriteLine(title + "|" + bookDit[title]);
                }
                //当键(书名)的长度超过10时,截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字
                else
                {
                    Console.WriteLine(title.Substring(0, 8) + "..." + "|" + bookDit[title]);
                }

            }
            Console.ReadKey();
        }
    }
}
楼主 可以参考一下,如有不妥之处请指出。谢谢!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
//文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如果超过10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。
        static void Main(string[] args)
        {
            string[] lines = System.IO.File.ReadAllLines(@"C:\Users\yang\Documents\Visual Studio 2008\Projects\exem\test9\NewFolder1\1.txt", Encoding.Default);//链接文本
            foreach (string line in lines)//遍历每行数据
            {
                string[] a2 = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);//通过空格建立数组,建立后多余的空格会被StringSplitOptions.RemoveEmptyEntries清除
                if (a2[0].Length > 10)//判断标题长度是否超过10
                {
                    Console.WriteLine(a2[0].Substring(0, 8) + "...." + "|" + a2[1]);
                }

                else
                {
                    Console.WriteLine(a2[0] + "|" + a2[1]);
                }
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
轮回 中级黑马 2013-6-16 14:44:32
7#
      static void Main(string[] args)
        {
            string[] lines = File.ReadAllLines(@"D:\1.txt", Encoding.Default);//读取文件
            foreach (string line in lines)
            {
                string[] strs = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string title = strs[0];//标题
                string author = strs[1];//作者
                if (strs[0].Length>10)//判断长度
                {
                    title = strs[0].Substring(0, 8)+"...";//从中截取长度8
                    Console.WriteLine("{0}|{1}", title, author);
                }
                else
                {
                    Console.WriteLine("{0}|{1}", title, author);
                }
            }

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马