C#中IndexOf的⽤法
最近在机房重构做上机时间价格⽅⾯的时候遇到的⼀个时间格式的转换问题,如何将已经上机的时间转换出来?更加简洁明了美观?我的逻辑是这样的,客户上机登录后得出登录时间,客户已⽤的上机时间等于现在时间减去客户上机的登录时间
(已⽤时间=现在时间-上机登录时间)可得出来的时间⾮常的不美观。
通过⽹上查询得出了IndexOf函数和substring()函数的结合使⽤得出了时间格式的转换,转换后的结果如下所⽰
这样是否美观多了。
下⾯为代码展⽰:
public void TimeBilling()
{
Facade.TimeBillingFacade timeBillingFacade = new Facade.TimeBillingFacade();
List<Entity.CustomerActivation> list1 = customerActivationFacade.GetCustomerActivationList1();//返回当前已上机⽤户的卡号
for (int i = 0; i < list1.Count; i++)
{
string identityNo = list1[i].IdentityNo;
List<Entity.CustomerActivation> list = customerActivationFacade.GetCustomerActivationByIdentityNo(identityNo);//返回当前已上机⽤户的
开始上机时间                for (int j = 0; j < list.Count; j++)
{
string BeginTime = list[j].BeginTime;
string Time = Convert.ToString(DateTime.Now - Convert.ToDateTime(BeginTime));//此时间为⽤户的上机已⽤时间
//转换时间格式
int a = Time.IndexOf(':');//使⽤IndexOf()函数从前往后出时间冒号:在时间Time中的索引位置,并将返回结果赋值给int型变量a
int price = Convert.ToInt32(Time.Substring(a + 1, 2));//Time.Substring(a + 1, 2)为截取从a+1到2位以内的字符串
int day = Convert.ToInt32(Time.Substring(0, 1)) * 24;
int hour = Convert.ToInt32(Time.Substring(a - 2, 2));
string Hour = Convert.ToString(day + hour);
string time = Hour + "时" + Time.Substring(a + 1, 2) + "分";//Time.Substring(a + 1, 2)为截取从a+1到2位以内的字符串
//timeBillingFacade.TimeBilling(identityNo, time, lastMoney);//将当前已经上机登录⽤户的已⽤时间传值⾄外观层
double rate;  //定义费率
string PriceId = Convert.ToString(TestHelpCommon.PriceId);
List<Entity.Customer> list2 = timeBillingFacade.GetTimeBillingBycboprice(PriceId);
//查询是否为会员
if (TestHelpCommon.CustomerType(identityNo))
{
rate = Convert.ToDouble(list2[0].VIPUsers);
}
else
{
rate = Convert.ToDouble(list2[0].OrdinaryUsers);
}
//判断余额是否充⾜
if (price % 6 == 0)  //每6分钟进⾏⼀次扣费,上机不满6分钟不计费
{
if (Convert.ToDouble(list[j].LastMoney) > 0)
{
double lastMoney = Convert.ToDouble(list[j].LastMoney) - rate / 10;
timeBillingFacade.TimeBilling(identityNo, time, lastMoney);//将当前已经上机登录⽤户的已⽤时间传值⾄外观层
}
else
{
//当余额不⾜时⾃动结账下机
double LastMoney = Convert.ToDouble(list[j].LastMoney);
TestHelpCommon.CheckOut(identityNo, LastMoney);
}
}
}
}
}
下⾯为我⽹上所的资料。
IndexOf()
查字串中指定字符或字串⾸次出现的位置,返⾸索引值,如:
str1.IndexOf("字"); //查“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查“字串”的第⼀个字符在str1中的索引值(位置)
str1.IndexOf("字",start,end);//从str1第start+1个字符起,查end个字符,查“字”在字符串STR1中的位置[从第⼀个字符算起]注意:start+end不能⼤于str1的长度
indexof参数为string,在字符串中寻参数字符串第⼀次出现的位置并返回该位置。如string s="0123dfdfdf";int i=s.indexof("df");这时i==4。
如果需要更强⼤的字符串解析功能应该⽤Regex类,使⽤正则表达式对字符串进⾏匹配。
indexof() :在字符串中从前向后定位字符和字符串;所有的返回值都是指在字符串的绝对位置,如为
空则为- 1
string test="asdfjsdfjgkfasdsfsgfhgjgfjgdddd";
test.indexof(’d’)      =2            //从前向后 定位 d 第⼀次出现的位置
test.indexof(’d’,1)    =2          //从前向后 定位 d 从第三个字符串 第⼀次出现的位置
test.indexof(’d’,5,2)  =6      //从前向后 定位 d 从第5 位开始查,查2位,即 从第5位到第7位;
lastindexof() :在字符串中从后向前定位字符和字符串;、
⽤法和 indexof() 完全相同。
以下为⾃⼰学习理解时所敲的控制台程序
====================================================================
IndexOfAny ||lastindexofany
indexof的用法javascript
他们接受字符数组做为变元,其他⽅法同上,返回数组中任何⼀个字符最早出现的下标位置
如下
char[] bbv={’s’,’c’,’b’};
string abc = "acsdfgdfgchacscdsad";
Response.Write(abc.IndexOfAny(bbv))=1
Response.Write(abc.IndexOfAny(bbv, 5))=9
Response.Write(abc.IndexOfAny(bbv, 5, 3))=9
lastindexofany 同上。
====================================================================
substring() ⽤法
string a="aadsfdjkfgklfdglfd"
a.substring(5)      //截取从第五位以后的所有字符串
a.substring(0,5)    //截取从第0到第5 以内的所有字符串以下为⾃⼰学习理解时所敲的控制台程序

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。