我有一个按课程名称和学期格式化的课程数据库。
一些例子:
(fa-fall sp-spring)
我需要复制并从每个字符串中删除学期。格式的不一致让我头疼不已。
非常感谢任何有关如何开始此任务的输入。
答案 0 :(得分:0)
因为我也没有看到任何适用于所有字符串的真实模式。我会创建函数来处理可能发生的不同子组。
从我所看到的,我得出了5种不同的模式:
2015年春季(SemesterNameFull +“”+年)
SP 15(SemesterNameShort +“”+ ShortYear)
FA12(SemesterNameShort + ShortYear)
2011年夏季(SemesterNameFull +“”+年份)
2011Fall(Year + SemesterNameFull)
您可以使用代码创建一段时间内的所有实例,然后使用简单的选择&替换以摆脱他们中的大多数。
答案 1 :(得分:0)
这是对它的打击。困难的部分(在操作数据之前要做的第一件事)是将字符串拆分成实际有意义的标记。
因此,将每个字符串按空格分开,字母/数字相交,执行一些字符串清理,并删除所有不需要的标记。似乎适用于您输入的数据。
private static void Main()
{
var list = new[]
{
"ARCH 6359 Spring 2015", "BIOL 3324 Fall 2013", "ENGI 2304 SP15", "GCSW FA 13", "GENB 4350 Summer 2011",
"GROUP Writing Consultations 2011Fall", "YES Prep Fa12"
};
var toRemove = new[] {"SP", "SPRING", "FA", "Fall", "Summer"};
foreach (var str in list)
{
var items = Regex.Split(str, @"(?<=\D)(?=\d)|(?<=\d)(?=\D)|(\s+)")
.Select(i => i.Trim())
.Where(i => i != "" && !toRemove.Contains(i, StringComparer.OrdinalIgnoreCase));
Console.WriteLine(String.Join(" ",items));
}
Console.Read();
}
产地:
ARCH 6359 2015
BIOL 3324 2013
ENGI 2304 15
GCSW 13
GENB 4350 2011
GROUP Writing Consultations 2011
YES Prep 12