问题描述
在VB中:N/W0.100U/W0PCS0我要截取0.100怎么搞??
解决方案
解决方案二:
有什么规律么?是不是就是U/W前面的数字
解决方案三:
mid(str,5,5)mid(字符串,起始位置,截的长度)
解决方案四:
string.subString(a,b)a起始位置b截取的长度
解决方案五:
如果是长度固定就是直接字符串截取,其它的基于规则的可用正则表达式
解决方案六:
如果N/W,U/W是固定的,只有数字是不固定的,可以这样取得数字DimstrAsString="N/W0.100U/W0PCS0"str=str.Substring(3,str.LastIndexOf("U"))DimdblAsDoubledbl=CDbl(str.Trim)
解决方案七:
使用正则吧,如果你想截取字符串中的数字和小数点(你的要求筛选0.100已经在其中),"[0-9.]+"这个正则表达式就可以。
解决方案八:
3楼说错了吧。string.subString(a,b)a起始位置b结束位置DimstrDataAsString="N/W0.100U/W0PCS0"
把你数据粘出来看了下,其实应该是strData.Substring(3,8).Trim()或者mid(strData,4,8).trim()
解决方案九:
去学正则表达式,.NET的正则表达式比较强大
解决方案十:
引用7楼kulama777的回复:
3楼说错了吧。string.subString(a,b)a起始位置b结束位置VB.NETcodeDimstrDataAsString="N/W0.100U/W0PCS0"把你数据粘出来看了下,其实应该是strData.Substring(3,8).Trim()或者mid(strData,4,8).trim()
3loushiduidi
解决方案十一:
正则表达式是什么东西?
解决方案十二:
不懂VB,写了个简单的C#函数楼主自己改改吧staticdecimalget(stringstr){intstrStart=str.IndexOf("N/W")+3;intindexLength=str.IndexOf("U/W")-strStart;stringstrAtLast=str.Substring(strStart,indexLength).Trim();returnConvert.ToDecimal(strAtLast);}
解决方案十三:
引用9楼firein的回复:
引用7楼kulama777的回复:3楼说错了吧。string.subString(a,b)a起始位置b结束位置VB.NETcodeDimstrDataAsString="N/W0.100U/W0PCS0"把你数据粘出来看了下,其实应该是strData.Substring(3,8).Trim()或者mid(strData,4,8).trim()3loushiduidi
b是长度,我搞错了。不过写的处理方法是对的。
解决方案十四:
我也想了解,谢谢LZ.
解决方案十五:
没遇到过这种情况.
解决方案:
查找'0.100'的位置,再LEFT,RIGHT不就行了
解决方案:
3楼对,7楼错长度固定用DimstrDataAsString="N/W0.100U/W0PCS0"msgbox(strData.substring(6,5))
解决方案:
如果你追求性能,不论是WEB还windowsfrom建议用正则)"[0-9.]+"用法还是比较简单.
解决方案:
正则来了:DimmatchAsMatch=Regex.Match("N/W0.100U/W0PCS0","(?<=N/Ws*)[^s]*(?=U/W)")
要引用命名空间:ImportsSystem.Text.RegularExpressions用的时候取match.value
解决方案:
晕死啦,C#的跑来这亮骚了
解决方案:
引用16楼tjficcbw的回复:
3楼对,7楼错长度固定用DimstrDataAsString="N/W0.100U/W0PCS0"msgbox(strData.substring(6,5))
感谢你的指正,好像我前面已经把错误纠正过来了。让您再一次严重指摘出来感激之至。请发表时候把错误点说的明确一点,要不误导了本不该误导的人,那样还不如不要发帖。原始的数据,请问你看清楚没有?你以为一个“N/W“后面就是空两个空格,取到的就是要取得东西?"N/W0.100U/W0PCS0"按照楼主的意思,应该取动态的值,不是固定的。如果数据变成这样?"N/W0.0100U/W0PCS0"还要再重新写取值得方法?还是建议看清楚后或测试后再下个结论,毕竟我测试过了。