验证SQL列列表的标头名称
本文关键字:SQL 列表 验证 | 更新日期: 2023-09-27 18:15:48
我目前正在尝试为人们输入使用临时表创建的CSV的SQL头的用户友好输入,但是我在验证和更改名称为SQL友好列头时遇到问题。
一个示例输入如下:
名称、Ag-e性别、出生地点,Rac + e
请记住,输入可以是任何单词,这些只是一个例子。我理想的最终输出是SQL列标头
姓名年龄性别出生地种族
然而,我有检查无效字符的问题(我实际上还没有得到解决),但我目前的主要问题是检查单词之间的空格,应该在单词的开头有一个空格和其他空格。
我当前的输出如下(请注意,无效字符将用于稍后的测试):
姓名年龄-性别出生地点Rac+e
请注意,除了"出生地点"外,每个空格之间都有双空格。
我目前使用的代码来实现这一点(或不实现,你可以清楚地看到)是:
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);
我以为你说输入就像第一个字符串,逗号分隔。这样不行吗?您所要做的就是删除不需要的字符(针对黑名单)
var input = "Name, Ag-e, Gender, Birth Place, Rac+e";
var splitInput = input.Split(',')
.Select(i =>
i.Trim()
.ToLower()
.Replace(' ','_'));
var output = string.Join(" ", splitInput.ToArray());