public static string ReverseWords(string array)
{
if (string.IsNullOrEmpty(array))
{
throw new ArgumentException("");
}
int arrLen = array.Length;
char[] strNew = new char[arrLen + 1];
//全部反转
for (int index = 0; index < arrLen; index++)
{
strNew[index] = array[arrLen - 1 - index];
}
strNew[arrLen] = ' '; //为了复原最后一个单词,添加一个辅助空格
int iStart = 0, iEnd = 0;
char tmpChar;
//复原单词
for (int Index = 0; Index < arrLen + 1; Index++)
{
//Index指向空格
if (strNew[Index] == ' ')
{
iEnd = Index - 1;
while (iStart < iEnd)
{
tmpChar = strNew[iStart];
strNew[iStart] = strNew[iEnd];
strNew[iEnd] = tmpChar;
iStart++;
iEnd--;
}
iStart = Index + 1;//跳过空格
}
else if (strNew[Index] == '!' | strNew[Index] == ',' | strNew[Index] == '.' | strNew[Index] == ';')
{
iStart = Index + 1;//跳过标点
}
}
//合成字符串
array = string.Empty;
for (int index = 0; index < strNew.Length - 1; index++)//去掉辅助的空格
{
array += strNew[index];
}
return array;
}