我有字符串qty__c,可能有也可能没有小数点 下面的代码给了我一个System.ArgumentOutOfRangeException:Length不能小于零。
qty__c = qty__c.Substring(0, qty__c.IndexOf("."));
如果没有“。”,我如何迎合?
由于
答案 0 :(得分:6)
最简单的方法就是单独测试它:
int dotIndex = quantity.IndexOf('.');
if (dotIndex != -1)
{
quantity = quantity.Substring(0, dotIndex);
}
还有其他选择......例如,如果真的希望在单个语句中执行此操作,则可以使用上面的条件运算符,或者:
quantity = quantity.Split('.')[0];
或稍高效:
// C# 4 version
quantity = quantity.Split(new[] {'.'}, 2)[0];
// Pre-C# 4 version
quantity = quantity.Split(new char[] {'.'}, 2)[0];
(第二种形式在找到第一个点后有效地停止分裂。)
另一种选择是使用正则表达式。
总的来说,我认为第一种方法是最明智的。如果您发现需要经常这样做,请考虑编写一个方法来封装它:
// 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);
}
答案 1 :(得分:3)
在调用qty__c
之前,您只需测试Substring
是否有一个点:
var pointPos = qty__c.IndexOf('.');
if (pointPos != -1)
{
qty__c = qty__c.Substring(0, pointPos);
}
答案 2 :(得分:1)
对该字符串使用IndexOf
方法。如果返回值为-1,则表示没有搜索到的字符。
int index = mystring.IndexOf('.');
在您的代码中,您没有检查IndexOf
的返回值。在'。'的情况下字符串中不存在,将抛出异常,因为SubString
已作为第二个参数传递-1。
答案 3 :(得分:0)
var indexofstring=quantity.Indexof('.');
if(indexofstring!=-1)
{
quantity=quantity.SubString(0,indexofstring);
}
答案 4 :(得分:0)
假设您正在寻找一个数字中的小数点,该数字在偏移3处 '123.456'和'123',那么一个解决方案是
var index =(mystring&“。”)。IndexOf(“。”)
(抱歉VB,我不确定C#语法)