2016-04-06 74 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();