如何找到多个子串

时间:2013-06-26 09:52:36

标签: c# substring

我已经存储了出生日期var char格式:

示例:1989-8-15

我想从中找出子字符串,即我想要单独的年,月和日期。我用以下代码尝试了它:

string dateOfbirth = (string)(DataBinder.Eval(e.Item.DataItem, "dob"));

int length = (dateOfbirth).Length;
int index1 = dateOfbirth.IndexOf('-');
int index2 = dateOfbirth.IndexOf('-', index1 + 1);
string year = dateOfbirth.Substring(0, index1);
string month = dateOfbirth.Substring(index+1, index2-1);
string day = dateOfbirth.Substring(index2, length);

我收到了错误消息。请提出解决方案。提前谢谢。

5 个答案:

答案 0 :(得分:5)

你可以试试这个

string [] date = dateOfbirth.Split('-');
string year = date[0];
string month = date[1];
string day = date[2];

答案 1 :(得分:4)

DateTime dob = DateTime.ParseExact("1989-8-15","yyyy-M-dd",null);
Console.WriteLine(dob.Year);
Console.WriteLine(dob.Month);
Console.WriteLine(dob.Day);

清洁简单。

UPD :使用自定义日期格式将Parse更改为ParseExact

答案 2 :(得分:2)

我希望这会有所帮助:

string st= "1989-8-15"; / 
string st = (string)(DataBinder.Eval(e.Item.DataItem, "dob"));

string [] stArr = st.Split('-');

所以,你现在有一个带有dob项目的数组。

答案 3 :(得分:0)

要真正回答你的问题:

string dateOfbirth = "1989-8-15";

int length = (dateOfbirth).Length;
int index1 = dateOfbirth.IndexOf('-');
int index2 = dateOfbirth.IndexOf('-', index1 + 1);

string year = dateOfbirth.Substring(0, index1);
string month = dateOfbirth.Substring(index1 + 1, index2 - index1 - 1);
string day = dateOfbirth.Substring(index2 + 1, length - index2 - 1);

只需向Substring方法提供正确的参数即可。

使用dateOfBirth.Split('-')可能会更好地解决您的问题。

答案 4 :(得分:0)

使用TryParseExact以避免因文化设置不同而导致异常

DateTime dateValue;
var dateString="1989-08-15";
if(DateTime.TryParseExact(dateString, "yyyy-MM-dd", CultureInfo.InvariantCulture,DateTimeStyles.None, out dateValue))
{
// parse successfull
Console.WriteLine(dateValue.Year);
Console.WriteLine(dateValue.Month);
Console.WriteLine(dateValue.Day);
}