??1??????????? ?????
/// <summary>
/// SQL??????????
/// </summary>
public class SqlConverter : IKeywordsConvertible
{
public SqlConverter(string[] keywords)
{
Keywords = keywords;
}
public SqlConverter() { }
/// <summary>
/// ????????
/// </summary>
public string[] Keywords
{
get { return keywords; }
set
{
this.keywords = new string[value.Length];
for (int i = 0; i < value.Length; i++)
{
this.keywords[i] = value[i].ToLower();
}
}
}
private string[] keywords;
/// <summary>
/// ?????????
/// </summary>
private StringBuilder charBuilder = new StringBuilder();
/// <summary>
/// ?????????
/// </summary>
private StringBuilder symboBuilder = new StringBuilder();
/// <summary>
/// ?????????
/// </summary>
private StringBuilder resBuilder = new StringBuilder();
/// <summary>
/// ????????????????
/// </summary>
private bool lastIsLetter;
/// <summary>
/// ???????
/// </summary>
private string temp;
/// <summary>
/// ???
/// </summary>
/// <param name="source">???????????</param>
/// <returns>??????</returns>
public string Convert(string source)
{
charBuilder.Clear();
symboBuilder.Clear();
resBuilder.Clear();
lastIsLetter = true;
temp = string.Empty;
// ?????????
char[] charArray = source.ToArray<char>();
// ????
foreach (var c in charArray)
{
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
{
// ??????????????????????????????????
if (!lastIsLetter)
{
PushSymbols();
}
charBuilder.Append(c);
lastIsLetter = true;
}
else
{
// ??????????????????????????????????
if (lastIsLetter)
{
PushLetters();
}
symboBuilder.Append(c);
lastIsLetter = false;
}
}
// ??????????????
if (lastIsLetter)
{
PushLetters();
}
else
{
PushSymbols();
}
return resBuilder.ToString();
}
/// <summary>
/// ????????????????????????
/// </summary>
private void PushLetters()
{
temp = charBuilder.ToString();
if (Keywords.Contains(temp.ToLower()))
{
resBuilder.Append(temp.ToUpper());
}
else
{
resBuilder.Append(temp);
}
charBuilder.Clear();
}
/// <summary>
/// ????????????????????????
/// </summary>
private void PushSymbols()
{
resBuilder.Append(symboBuilder.ToString());
symboBuilder.Clear();
}
}
????2?????
????????? ???????SQL????????????????? ?????-?????-?????-?????-?????-????? ????
????????? ??????卸????????????????????????写
?????????? ???????些???????
????3?????
??????????????????????????
?????????????????
????1???????????????????????????????????????
????2?????谢????????????
??????????
????1??????????char????
????2????? ??????卸? ?????? ????????????????????谢????????????????????????
????3???????????危???????????????????谢???????
????4?????效??

????5?????
??????????????SQL?娣�?????SQL??????写????????写??????????????????????????????????????????????????????
???????????????????????????写????????
??????????????????????????????????????????????????危???????????????????????????????
?????????????????????????????
???????????????????????????????????????????
?????????????????????????????SQL???????写?????????????????????????????????些????????????????貌???????????????????????????????????懈??????????
???????????????
?????????????????????????????????????锟�?????????眉?????
??????????????写??????????????????胁慰??????????????
?????????????????????????????