在C#中的位置拆分字符串

时间:2011-09-12 10:13:56

标签: c# .net string split position

我有一个日期戳(020920111422),我想将其拆分为

天= 02, 月= 09, 年= 2011年, 小时= 14, 和分钟= 22

C#中是否有“在位置拆分字符串”方法?

6 个答案:

答案 0 :(得分:15)

你想:

string x = s.Substring(0, i), y = s.Substring(i);

(或者可能是i-1 / i + 1,具体取决于您的具体要求)。

但是,您也可以使用DateTime.ParseExact将其加载到DateTime,告诉它显式格式:

var when = DateTime.ParseExact("020920111422", "ddMMyyyyHHmm",
    CultureInfo.InvariantCulture);

答案 1 :(得分:7)

您可以通过SubString执行此操作 - 例如:

string myDay = mydatestamp.SubString (0,2);

或创建DateTime

DateTime myDateTime = DateTime.ParseExact ( mydatestamp, "ddMMyyyyHHmm" , CultureInfo.InvariantCulture );

答案 2 :(得分:3)

考虑到“在位置上拆分字符串”回答问题 - 您可以通过多次使用不同的抵消来利用String.Substring(Int32, Int32)方法。

另请参阅LINQ Take()Skip()方法,它们也允许返回元素的数量。

否则,请参阅使用DateTime.ParseExact(),提供其他人的示例。我相信这是将您提供的字符串转换为DateTime值的最正确方法。

答案 3 :(得分:3)

您也可以使用

 var d = DateTime.Parse(s, "ddMMyyyyHHmm");

如果最终目标是DateTime。

答案 4 :(得分:2)

相反,您可以使用Datatime.ParseExact转换日期戳,并可以从该日期戳中提取您想要的日,月,年,小时和分钟。请参阅以下代码部分以了解Datetime.ParseExact转换。

DateTime.ParseExact(YourDate, "ddMMyyyyHHmm", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None)

答案 5 :(得分:0)

对于更多用例,也许这可以帮助

string rawData = "LOAD:DETAIL     11.00.0023.02.201614:52:00NGD    ...";

var idx = 0;
Func<int, string> read = count =>
{
    var result = rawData.Substring(idx, count);//.Trim();
    idx += count;
    return result;
};

var type = read(16);
var version = read(8);
var date = read(18);
var site = read(8);
//...