gpt4 book ai didi

c# - 解析日期时间的函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:30 26 4
gpt4 key购买 nike

我一直在使用这个我组合在一起的函数以 MM/DD/YYYY HH:MM:SS PM 格式提取 DateTime。好吧,我一直在解析的 Excel 文件现在正在更改,要拆分的字符现在是 EITHER +- 而在它之前只是 +

我试图修改我的语法以获取一个字符数组,但在这样做时我现在遇到了 2 个编译错误:

Argument 1: cannot convert from 'string[]' to 'char'

The best overloaded method match for 'string.IndexOf(char)' has some invalid arguments

应该如何更新以接受字符数组?

将传递给函数的 2 种示例格式是:

07/22/2016 05:22:00 PM + 00:00
07/22/2016 12:00:00 AM - 04:00

函数是:

public static string FormatToUsableDateTime(string DateToConvert)
{
convertedDateTime = null;
var charstocheck = new[]
{
"+",
"-"
};
int index = DateToConvert.IndexOf(charstocheck);
convertedDateTime = (index > 0 ? DateToConvert.Substring(0, index) : "");
return convertedDateTime;
}

最佳答案

因为你在你的charstocheck变量中使用了var并且没有明确声明数据类型,所以编译器将它分配为string[],从你放置数据的方式来看(用“...”而不是“...”包裹它们)

此外,IndexOf 只会检查单个 字符,因此您不能放置数组(无论是 string[] 还是 char[]) 作为输入。

您可以做的是检查哪个字符(+或-)存在于string中,并在您的IndexOf中使用它:

public static string FormatToUsableDateTime(string DateToConvert)
{
convertedDateTime = null;
char chartocheck = DateToConvert.Contains('+') ? '+' : '-';
int index = DateToConvert.IndexOf(chartocheck);
convertedDateTime = (index > 0 ? DateToConvert.Substring(0, index) : "");
return convertedDateTime;
}

这符合这种情况,因为您只有两个字符要检查,要么 + 或-。如果要检查的字符超过两个,可以考虑使用 IndexOfAny

编辑:

BACON指出“check-if-exist”然后“use-if-exist”的模式在大多数情况下都是低效的,我同意这一点。 “如果存在则检查并使用”通常是更好的解决方案。因此,上面的代码可以替换为 IndexOfAny(如 BACON 回答的那样)或者,

int index = DateToConvert.IndexOf('+'); //guess what is more often to come
if (index < 0) //if proven wrong, guess take the other
index = DateToConvert.IndexOf('-');

为了更有效的解决方案。

关于c# - 解析日期时间的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41709752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com