1.B
2.C
3.A
4.B
5.A
6.C
7.AC
8.BC
9.AC
10.BD
11.(1)810 N (2)5 m/s 12.5倍
即以“数字.”分割
public static void test1()
{
//需要解析的文本
string txt = "1.B2.C3.A4.B5.A6.C7.AC8.BC9.AC10.BD11.(1)810 N (2)5 m/s 12.5倍";
//把文本转换成字符数组
char[] c = txt.ToCharArray();
//定义一个栈存放子字符串
Stack<string> words = new Stack<string>();
//定义游标
int start = c.Length - 1;
int end = start;
//解析文本
while (start > 0)
{
if (IsWord(c[start])) start--;
if (c[start] == '.')
{
while (start-- > 0) //还需要解析答案的数字编码,所以要判断start--是否一直是数字,否则已经找完一个选择了!
{
if ((c[start] < '0' || c[start] > '9'))
break;
}
words.Push(txt.Substring(start + 1, end - start));
end = start;
}
start--;
}
//输出结果
while (words.Count > 0)
{
Console.WriteLine(words.Pop());
}
Console.ReadLine();
}
//判断是否是中文字符
static bool IsWord(char code)
{
return Encoding.Default.GetByteCount(code.ToString()) == 1 ? false : true;
}
}