有关一些字符串练习的答案
这是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()));
Console.WriteLine(string.Join(" ", Console.ReadLine().Split(' ').Reverse().ToArray()));
var email = Console.ReadLine().Split('@');
Console.WriteLine("username: {0}, domain: {1}.", email[0], email[1]);
Console.WriteLine(string.Join(", ", Console.ReadLine().Select((x, i) => new { x, i }).Where(x => x.x == 'e').Select(x => (x.i + 1).ToString()).ToArray()));
Console.WriteLine(string.Join("", "abc".Reverse().ToList()));
Console.WriteLine(string.Join(" ", "hello c sharp".Split(' ').Reverse().ToList()));
Console.WriteLine(string.Format("用户名:{0},域名{1}", "abc@163.com".Split('@').First(), "abc@163.com".Split('@').Last()));
Console.WriteLine(string.Join(",", Regex.Matches( "字e符e串", "e").OfType<Match>().Select(t => t.Index).ToList()));