拆分输入并存储在不同的变量c#

时间:2017-04-27 01:32:28

标签: c# asp.net arrays split

以下是我的旧代码,如果输入是这样的,那么效果很好" 01/01/2017"

string monthfrom;
                    string yearfrom;
                    string valfrom = "01/01/2017";
                    valfrom = valfrom.Replace("/", string.Empty);
                    monthfrom = valfrom.Substring(0, 2);
                    yearfrom = valfrom.Substring(valfrom.Length - 4);
                    pdfFormFields.SetField("Month[0]", monthfrom);
                    pdfFormFields.SetField("Year[0]", yearfrom);
  

结果:月[0] = 01年[0] = 2017

但是如果输入是这样的1/1/2017,结果将是这样的

  

月[0] = 11年[0] = 2017

我知道错误的原因是因为这个月来自= valfrom.Substring(0,2); ,所以我把代码更改为这样。

char[] delimiterChars = { '/' };
                    string text = "1/1/2017";
                    string[] words = text.Split(delimiterChars);
                    string result = string.Empty;
                    foreach (string s in words)
                    {
                        result += s;
                    }//foreach

但我在这里有一个问题,我希望输入有不同的变量,但我不知道该怎么做,也没有一个想法。

如果投入是1/1/2017& 2017年1月1日

输入:2017年1月1日

  

月= 1天= 1年= 2017

输入:01/01/2017

  

月= 01,日= 01,年= 2017

2 个答案:

答案 0 :(得分:1)

string x = "1/1/2017";
string y = "01/01/2017";
DateTime dateTime;
if (DateTime.TryParse(y, out dateTime))
{
    Console.WriteLine($"Day = {dateTime.Day}");
    Console.WriteLine($"Month = {dateTime.Month}");
    Console.WriteLine($"Year = {dateTime.Year}");
}
else
{
    Console.WriteLine("Date cannot be parsed");
}

答案 1 :(得分:0)

解析日期时间,然后获取相关字段。在这种情况下,您不必担心字符串的格式。

 public class ParsedDate
        {
            public int day   { get; set; }
            public int month { get; set; }
            public int year  { get; set; }
        }


        public ParsedDate ParseDate(string inputString)
        {
            DateTime outDate;

            ParsedDate returnObject = new ParsedDate();

            if (String.IsNullOrEmpty(inputString))
            {
                throw new ArgumentException("String can not be empty");
            }

            DateTime.TryParse(inputString, out outDate);

            if (outDate != null)
            {
                returnObject = new ParsedDate
                {
                    day = outDate.Day,
                    month = outDate.Month,
                    year = outDate.Year
                };
            }

            return returnObject;
        }