【发布时间】:2016-02-18 10:47:26
【问题描述】:
这听起来像是一个非常基本的问题,但它给C# 带来了很多麻烦。
假设我有,例如,以下Strings 被称为我的chosenTarget.titles:
2008/SD128934 - Wordz aaaaand more words (1233-26-21)
20998/AD1234 - Wordz and less words (1263-21-21)
208/ASD12345 - Wordz and more words (1833-21-21)
现在您可以看到,所有三个Strings 在某些方面都不同。
我需要从这些Strings 中提取一个非常具体的部分,但正确处理这些细节让我感到困惑,我想知道你们中的一些人是否比我更了解。
我所知道的是Strings 将始终采用以下模式:
yearNumber + "/" + aFewLetters + theDesiredNumber + " - " + descriptiveText + " (" + someDate + ")"
在上面的例子中,我想要返回给我的是:
128934
1234
12345
我需要提取theDesiredNumber。
现在,我并不(那么)懒惰,所以我自己做了一些尝试:
var a = chosenTarget.title.Substring(chosenTarget.title.IndexOf("/") + 1, chosenTarget.title.Length - chosenTarget.title.IndexOf("/"));
这样做是切掉yearNumber 和/,在theDesiredNumber 之前留下aFewLetter。
但是,我很难正确移除其余部分,我想知道你们中的任何人是否可以在这件事上帮助我?
【问题讨论】:
-
208和20998是几岁?真的是 208 和 20998? -
嘿,我刚刚制作了那些
Strings 来适应这个例子。我想我复制的是2008,我只是添加和删除了多样性的数字,并证明我事先不知道一年的长度。 -
对于这种情况,Regex 解决方案可能是最好的
-
我更喜欢正则表达式。试试这个,例如:stackoverflow.com/questions/841883/… 和这个:stackoverflow.com/questions/21410065/…
-
避免使用正则表达式。方式矫枉过正。从您当前拥有的内容中,只需找到
char.IsDigit返回true 的第一个索引,然后添加另一个Substring。