首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

相干一些字符串练习的答案

2013-03-10 
有关一些字符串练习的答案这是c#基础班,苏坤老师讲字符串时留下的作业课上练习1:接收用户输入的字符串,将

有关一些字符串练习的答案
这是c#基础班,苏坤老师讲字符串时留下的作业
课上练习1:接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"
课上练习2:接收用户输入的一句英文,将其中的单词以反序输出。"hello c sharp"→"sharp c hello"
课上练习3:从Email中提取出用户名和域名:abc@163.com。
课上练习4:让用户输入一句话,找出所有e的位置
由于没有接下来的视频了,我将这4道题做了,下面是我做的程序,都调试过了,但是感觉比较原始,不知道苏老师是怎么做的。
麻烦坛子里的高手帮忙看看,也好帮我我理一下思路,看看有没有简单的方法,谢谢了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace string_练习
{
    class Program
    {
        static void Main(string[] args)
        {
            ////将一组字符串反向输出,输入abc,输出cba
            //string recive = "";
            //char[] chars = null;
            //char temp = '0';
            //int i = 0;
            //Console.WriteLine("请输入一组字符串");
            //recive = Console.ReadLine();
            //chars = recive.ToCharArray();
            //for (i = 0; i < (chars.Length - 1) / 2; i++)
            //{
            //    temp = chars;
            //    chars = chars[chars.Length - i - 1];
            //    chars[chars.Length - i - 1] = temp;
            //}
            //recive = new string(chars);
            //Console.WriteLine(recive);

            //反向输出一组单词 输入hello world 输出 world hello
            //string recive = "", input = "";
            //string temp = "";
            //Console.WriteLine("请输入一句话");
            //recive = Console.ReadLine();
            //string[] get = null;
            //char[] chars = { ' ' };
            //get = recive.Split(chars, StringSplitOptions.None);
            //int i = 0;
            //for (i = 0; i < (get.Length) / 2; i++)
            //{


            //    temp = get;
            //    get = get[get.Length - i - 1];
            //    get[get.Length - i - 1] = temp;
            //}
            //for (int j = 0; j < get.Length; j++)
            //{
            //    if (j == get.Length - 1)
            //    {
            //        Console.Write(get[j]);
            //    }
            //    else
            //    {
            //        Console.Write(get[j] + " ");
            //    }
            //}
            //Console.WriteLine(recive);
            //Console.WriteLine(input);

              //// 从Emai中提取用户名和域名
            //string input = "";
            //Console.WriteLine("请输入您的邮箱地址");
            //input = Console.ReadLine();
            //char[] chars = { '@'};
            //string[] recive = input.Split(chars, StringSplitOptions.RemoveEmptyEntries);  
            //Console.WriteLine("您的邮箱域名是{0},地址是{1}",recive);

            //让用户看看一句英文中有多少个e,并且找出所有e的位置
            string input = "";
            Console.WriteLine("请输入一句话:");
            input = Console.ReadLine();
            int i = 0, j = 0, t = 0, s = 0;
            if (input.Contains("e"))
            {
                for (i = 0; i < input.Length; i++)
                {

                    ++j;


                    t = input.IndexOf("e", s);                  //第一个e的起始位置
                    if (t == -1)
                    {
                        break;
                    }
                    s = t + 1;
                    Console.WriteLine("第{0}个e的位置是{1}", j, t);
                }
            }
            else
            {
                Console.WriteLine("您输入的句子中不包含e");
            }
                Console.ReadKey();
        }
    }
}

[解决办法]
本帖最后由 caozhy 于 2013-03-06 19:02:27 编辑 看你自己动脑筋了,那就做一遍给你。

课上练习1:接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"

Console.WriteLine(new string(Console.ReadLine().Reverse().ToArray()));

课上练习2:接收用户输入的一句英文,将其中的单词以反序输出。"hello c sharp"→"sharp c hello"
Console.WriteLine(string.Join(" ", Console.ReadLine().Split(' ').Reverse().ToArray()));

课上练习3:从Email中提取出用户名和域名:abc@163.com。
var email = Console.ReadLine().Split('@');
Console.WriteLine("username: {0}, domain: {1}.", email[0], email[1]);

课上练习4:让用户输入一句话,找出所有e的位置
Console.WriteLine(string.Join(", ", Console.ReadLine().Select((x, i) => new { x, i }).Where(x => x.x == 'e').Select(x => (x.i + 1).ToString()).ToArray()));

[解决办法]
本帖最后由 caozhy 于 2013-03-06 19:00:50 编辑 1. 
Console.WriteLine(string.Join("", "abc".Reverse().ToList()));

           
2. 
Console.WriteLine(string.Join(" ", "hello c sharp".Split(' ').Reverse().ToList()));

  
3. 
Console.WriteLine(string.Format("用户名:{0},域名{1}", "abc@163.com".Split('@').First(), "abc@163.com".Split('@').Last()));

   
4. 
Console.WriteLine(string.Join(",", Regex.Matches( "字e符e串", "e").OfType<Match>().Select(t => t.Index).ToList())); 


           
[解决办法]
都不错,不过lz精神要保持,就是该一步一步实现

热点排行