黑马程序员技术交流社区

标题: 关于单词的反转 [打印本页]

作者: 邢凯    时间: 2014-8-6 12:38
标题: 关于单词的反转
本帖最后由 邢凯 于 2014-8-6 22:33 编辑

关于单词的反转  这个我在做的练习题   不是入学考试什么的里面的
接收用户输入的一句英文,将其中的单词以反序输出。      “I love you"→“I evol uoy"
我写到这里  就不知道该怎么继续了
  1. Console.WriteLine("请输入一句英文");
  2.             string str = Console.ReadLine();
  3.             string[] number = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  4.             string zm = "";
  5.             for (int i = number.Length - 1; i >= 0; i--)
  6.             {

  7.             }
复制代码

在这个for循环里面 我可以吧number 这个数组里的都给换过来  但是里面的单词 如 love 这个要怎么反过来、?   求解啊{:3_65:}
作者: 向晓伟    时间: 2014-8-6 13:09
在for里面嵌套一个for。 循环的是number[][];
用stringbuild把每个字符加进去
  1. string[] str2 = str.Split(' ');
  2.             StringBuilder sb = new StringBuilder();

  3.             for (int i = 0; i < str2.Length; i++)
  4.             {
  5.                 for (int j = str2[i].Length - 1; j >= 0; j--)
  6.                 {
  7.                     sb.Append(str2[i][j]);
  8.                 }
  9.                 sb.Append(" ");
  10.             }
复制代码



作者: 许庭洲    时间: 2014-8-6 13:28
static void Main(string[] args)
{
            string sentence = "I love you";
            Console.WriteLine("原来的句子:" + sentence);
            Console.WriteLine("处理后的句子:" + ReverseSentence(sentence));//I evol uoy
            Console.Read();
}
static string ReverseSentence(string sentence)//反转句子
{
           sentence = ReverseString(sentence.Trim());
            Regex regex = new Regex(@"(\b\w+\b)|(\W+)");
            MatchCollection matches = regex.Matches(sentence);
            string str = "";
            for (int i = matches.Count - 1; i >= 0; i--)
            {
                if(i%2 == 0)
                {
                    str += matches[i].ToString();
                }
                else
                {
                    str += ReverseString(matches[i].ToString());
                }
            }
            return str;
}
static string ReverseString(string str)//反转单个字符串
{
            char[] chars = str.ToCharArray();
            str = "";
            for (int i = chars.Length - 1; i >= 0; i--)
            {
                str += chars[i];
            }
            return str;
}

作者: lc6897094    时间: 2014-8-6 13:49
这是我写的,思路就是先用split(" ")用空格把每个单词划分成数组,再对每个单词用TocharArray()划分成以字节为单位的数组,然后用循环把每个字节进行翻转,然后再组合成一个句话,组合的时候中间加空格
  1. private void btnTh_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             //接收用户的输入,并按照‘ ’空格划分为一个str数组,每个数组中包含一个单词
  4.             string word = txtB.Text;
  5.             string[] str = word.Split(' ');


  6.             for (int i = 0; i < str.Length; i++)
  7.             {
  8.                 //把每个str数组划分成一个字节型的数组chars
  9.                 char[] chars = str[i].ToCharArray();
  10.                
  11.                 //用for循环,讲chars数组的字母反转,然后转换成字符串重新赋值给str[i]
  12.                 for (int j = 0; j < chars.Length/2; j++)
  13.                 {
  14.                     char temp=' ';
  15.                     temp = chars[chars.Length - j-1];
  16.                     chars[chars.Length - j - 1] = chars[j];
  17.                     chars[j] = temp;
  18.                 }
  19.                 str[i] = new string(chars);
  20.             
  21.            
  22.             }

  23.             //再把每个反转过后的单词,重新组合成一个字符串,每个单词中间添加“ ”空格
  24.             string sum = "";
  25.             for (int i = 0; i < str.Length; i++)
  26.             {
  27.                 sum = sum + str[i]+" ";
  28.             }

  29.             //输出最后的结果,并提示反转完成
  30.             txtB.Text =sum;
  31.             MessageBox.Show("反转完成!");

  32.         }
复制代码

作者: 邢凯    时间: 2014-8-6 14:44
lc6897094 发表于 2014-8-6 13:49
这是我写的,思路就是先用split(" ")用空格把每个单词划分成数组,再对每个单词用TocharArray()划分成 ...

你这个,我有点看懂,  谢谢
作者: 邢凯    时间: 2014-8-6 14:51
许庭洲 发表于 2014-8-6 13:28
static void Main(string[] args)
{
            string sentence = "I love you";

大哥  sentence = ReverseString(sentence.Trim());
            Regex regex = new Regex(@"(\b\w+\b)|(\W+)");
            MatchCollection matches = regex.Matches(sentence);  你的这个我没看明白




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2