验证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);

验证SQL列列表的标头名称

我以为你说输入就像第一个字符串,逗号分隔。这样不行吗?您所要做的就是删除不需要的字符(针对黑名单)

        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());