如何从字符串中删除DateTime子字符串

时间:2016-04-06 16:22:02

标签: c# string datetime string-formatting

我有一堆字符串,其中一些字符串具有以下格式之一:

"TestA (3/12/10)"
"TestB (10/12/10)"

字符串的DateTime部分始终采用mm/dd/yy格式。

我想要做的是删除整个DateTime部分,包括括号。如果它总是相同的长度,我只需得到/的索引,然后减去直到并包括(的字符数。但由于字符串的mm部分可能是一个或两个字符,我无法做到。

那么是否可以使用.Contains或其他方法查看字符串是否包含指定的DateTime格式?

5 个答案:

答案 0 :(得分:5)

如果可以确定使用Regex.Replace()方法确保它们始终采用某种格式,则可以使用正则表达式去除可能的日期部分:

var updatedDate = Regex.Replace(yourDate,@"\(\d{1,2}\/\d{1,2}\/\d{1,2}\)","");

您可以see a working example of it here,它会产生以下输出:

TestA (3/12/10)  > TestA
TestB (10/12/10) > TestB
TestD (4/5/15)   > TestC
TestD (4/6/15)   > TestD

答案 1 :(得分:2)

您总是可以使用正则表达式来替换字符串

这是一个例子

var regEx = new Regex(@"\(\d{1,2}\/\d{1,2}\/\d{1,2}\)");
var text = regEx.Replace("TestA (3/12/10)", "");

答案 2 :(得分:1)

为此使用RegEx。我建议:

\(\d{1,2}\/\d{1,2}\/\d{1,2}\)

请参阅RegExr了解它的工作原理。

答案 3 :(得分:1)

可以使用正则表达式,例如:

string replace = "TestA (3/12/10) as well as TestB (10/12/10)";
string replaced = Regex.Replace(replace, "\\(\\d+/\\d+/\\d+\\)", "");

答案 4 :(得分:1)

如果我正确理解了这一点,你只想获取每个字符串的测试名称。将此代码复制到按钮单击事件。

string Old_Date = "Test SomeName(3/12/10)";
string No_Date = "";
int Date_Pos = 0;
Date_Pos = Old_Date.IndexOf("(");
No_Date = Old_Date.Remove(Date_Pos).Trim();
MessageBox.Show(No_Date, "Your Updated String", MessageBoxButton.OK);

总结一行代码

No_Date = Old_Date.Remove(Old_Date.IndexOf("(")).Trim();