2016-04-06 38 views
1

删除的DateTime子有一串字符串,其中一些具有下列格式之一:我如何从字符串

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

琴弦的DateTime部分始终处于mm/dd/yy格式。

我想要做的是删除整个DateTime部分,包括括号。如果它总是相同的长度,我会得到/的索引,并将其减去包括(在内的字符数。但由于字符串的mm部分可能是一个或两个字符,所以我不能这样做。

那么有没有办法做一个.Contains或东西,看看该字符串是否包含指定的DateTime格式?

+1

一行FYI:当你说'mm',它通常意味着零填充。如果它不是零填充的,它通常被称为'm'(或者经常是'M',因为'm'可能与“分钟”混淆,取决于您的语言)。 –

+1

字符串其余部分的格式约束是什么?它会有空间吗?(也就是说,你可以搜索第一个空间并在那里截断?)圆括号怎么办? –

+0

这对于RegEx来说是个不错的选择。另一种选择是,如果每个字符串中只有一个(和),则使用'LastIndexOf'来关闭)。 – Tim

回答

4

你可以使用正则表达式去除可能的日期部分,如果您可以确定它们将始终使用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 
+0

每个人的答案都有效,只是因为发布了一个工作示例而将此标记为正确。 – pfinferno

1

为此使用RegEx。我推荐:

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

看到RegExr它的工作。

1

正则表达式可以用于此,一些诸如:

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

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

下面是一个例子

var regEx = new Regex(@"\(\d{1,2}\/\d{1,2}\/\d{1,2}\)"); 
var text = regEx.Replace("TestA (3/12/10)", ""); 
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();