C# Revert 单词反转字符串!『测试通过』

This function will revert string "how are you?" to "you are how?".

Please input 'STOP' to stop the console!

 

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace HowAreYou
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             string msg =
13                 @"********************************************
14 {0}
15 ********************************************";
16             string usingMsg =
17 "Revert program.\r\n This function will revert string \"how are you?\" to \"you are how?\".\r\n Please input 'STOP' to stop the console!";
18             Console.WriteLine(msg, usingMsg);
19             string stopMark = "STOP";
20 
21             string input = string.Empty;
22             do
23             {
24                 input = Console.ReadLine();
25                 Console.WriteLine(Revert(input));
26 
27             } while (input != stopMark); // "\r\n".
28 
29         }
30         // how are you?
31         // you are how?
32         static string Revert(string target)
33         {
34             if (target == null || target == string.Empty)
35             {
36                 return "Error:Can not revert empty string! Please enter input like this:How are you?";
37             }
38 
39             // clear blank both end!
40             char blank = ' ';
41             if (target.StartsWith(blank.ToString()))
42                 target = target.Trim();
43 
44             StringBuilder builder = new StringBuilder();
45 
46             int i = target.Length - 1;
47             int j = target.Length - 1;
48 
49             if (char.IsPunctuation(target[target.Length - 1]))
50             {
51                 i = target.Length - 2;
52                 j = target.Length - 2;
53             }
54 
55             while (j > 0)
56             {
57                 if (target[j] == blank)
58                 {
59                     builder.Append(target.Substring(j + 1, i - j));
60                     builder.Append(blank.ToString());
61                     i = j - 1;
62                 }
63                 j--;
64             }
65 
66             builder.Append(target.Substring(j, i + 1));
67 
68             if (char.IsPunctuation(target[target.Length - 1]))
69                 builder.Append(target[target.Length - 1].ToString());
70 
71             return builder.ToString();
72         }
73 
74     }
75 
76 }
77 

 

 

posted @ 2010-03-23 00:33  Freedom  阅读(977)  评论(0编辑  收藏  举报