0

我目前正在尝试为人们提供用户友好的输入,以便为使用临时表创建的 CSV 输入 SQL 标题,但是我在验证名称并将名称更改为 SQL 友好的列标题时遇到了问题。

示例输入如下:

姓名、年龄、性别、出生地、种族+e

请记住,输入可以是任何单词,这些只是一个示例。我理想的最终输出将用于 SQL 列标题

姓名 年龄 性别 出生地 种族

但是我在检查无效字符时遇到了问题(我实际上还没有解决。)但我目前遇到的主要问题是检查单词之间的空格应该有空格和单词开头的其他空格。

我当前的输出结果如下(请注意,无效字符用于稍后测试。):

姓名 年龄 性别 出生地 Rac+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);
4

1 回答 1

0

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

        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());
于 2013-05-29T14:35:31.900 回答