我目前正在尝试为人们输入用户友好的输入,以便为使用临时表创建的CSV输入SQL标头,但是我在验证和更改名称到SQL友好列标题方面存在问题。
示例输入如下:
姓名,Ag-e,性别,出生地,Rac + e
请记住,输入可以是任何单词,这些只是一个例子。 我理想的最终输出将用于SQL列标题
名称年龄性别birth_place竞赛
但是我在检查无效字符时遇到了问题(我还没有真正解决过这个问题。)但我目前的主要问题是检查单词之间的空格,它们应该在开头有空格和其他空格的话。
我当前的输出结果为(请注意,无效字符将在稍后进行测试。):
将Ag-e性别出生地命名为Rac + e
请注意,除了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);
答案 0 :(得分: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());