【发布时间】:2013-05-29 22:35:31
【问题描述】:
我目前正在尝试进行用户友好的输入,以便人们输入使用临时表创建的 CSV 的 SQL 标题,但是我在验证名称并将名称更改为 SQL 友好的列标题时遇到问题。
示例输入如下:
姓名、年龄、性别、出生地、种族+e
请记住,输入可以是任何单词,这些只是一个示例。 我理想的最终输出将用于 SQL 列标题
姓名年龄性别出生地种族
但是我在检查无效字符时遇到了问题(我实际上还没有解决。)但我目前遇到的主要问题是检查单词之间的空格,这些单词在开头应该有空格和其他空格字数。
我目前的输出是这样的(请注意,无效字符是为了稍后测试。):
姓名年龄性别出生地种族+e
请注意,除了 Birth Place 之外,每个地方之间都有两个空格,而 Birth Place 应该有一个空格。
我目前用来实现这个(或者你可以清楚地看到没有实现)的代码是:
columnNamesList = new List<string>(columnNames.Split(splitChar));
columnNamesList[0] = columnNamesList[0].Trim();
columnNamesList[columnNamesList.Count - 1] = columnNamesList[columnNamesList.Count - 1].TrimEnd();
List<string> removalList = new List<string>();
foreach (string i in columnNamesList)
{
if (string.IsNullOrEmpty(i))
{
removalList.Add(i);
}
}
if (removalList.Count < 0)
{
foreach (string i in removalList)
{
columnNamesList.Remove(i);
}
}
for (int i = 0; i < columnNamesList.Count; i++)
{
string s = string.Empty;
string str = columnNamesList[i];
if (Regex.IsMatch(str, @"\w\s\w+", RegexOptions.IgnoreCase))
{
foreach (char c in str)
{
if (Char.IsLetterOrDigit(c) || c == ' ' || c == ',')
s += c;
s = s.Replace(' ', '_');
columnNamesList[i] = s;
}
}
}
string[] columnArray = columnNamesList.ToArray<string>();
columnNames = String.Join(" ", columnArray);
【问题讨论】:
-
你不能把所有的列名都放在'['和']'中,即
[Birth Place] -
我可以让实际查询停止关键字问题,但我认为列名中不能有空格。