我有字符串qty__c,可能有也可能没有小数点下面的代码给我一个System.ArgumentOutOfRangeException:长度不能小于零.
qty__c = qty__c.Substring(0, qty__c.IndexOf("."));
Run Code Online (Sandbox Code Playgroud)
如果没有".",我如何迎合?
谢谢
最简单的方法是单独测试它:
int dotIndex = quantity.IndexOf('.');
if (dotIndex != -1)
{
quantity = quantity.Substring(0, dotIndex);
}
Run Code Online (Sandbox Code Playgroud)
有一些替代方案......例如,如果您真的想在单个语句中执行此操作,则可以使用上面的条件运算符,或者:
quantity = quantity.Split('.')[0];
Run Code Online (Sandbox Code Playgroud)
或者更有效率:
// C# 4 version
quantity = quantity.Split(new[] {'.'}, 2)[0];
// Pre-C# 4 version
quantity = quantity.Split(new char[] {'.'}, 2)[0];
Run Code Online (Sandbox Code Playgroud)
(第二种形式在找到第一个点后有效地停止分裂.)
另一种选择是使用正则表达式.
总的来说,我认为第一种方法是最明智的.如果您发现需要经常这样做,请考虑编写一个方法来封装它:
// TODO: Think of a better name :)
public static string SubstringBeforeFirst(string text, string delimiter)
{
int index = text.IndexOf(delimiter);
return index == -1 ? text : text.Substring(0, index);
}
Run Code Online (Sandbox Code Playgroud)