请问如何截取一个字符串?
在VB中:N/W 0.100U/W 0PCS 0 我要截取0.100怎么搞?? --------------------编程问答-------------------- 有什么规律么? 是不是就是U/W前面的数字 --------------------编程问答-------------------- mid(str,5,5)mid(字符串,起始位置,截的长度) --------------------编程问答-------------------- string.subString(a,b)
a起始位置
b截取的长度 --------------------编程问答-------------------- 如果是长度固定就是直接字符串截取,其它的基于规则的可用正则表达式 --------------------编程问答-------------------- 如果N/W,U/W是固定的,只有数字是不固定的,可以这样取得数字
Dim str As String = "N/W 0.100U/W 0PCS 0"
str = str.Substring(3, str.LastIndexOf("U"))
Dim dbl As Double
dbl = CDbl(str.Trim)
--------------------编程问答-------------------- 使用正则吧,
如果你想截取字符串中的数字和小数点(你的要求筛选0.100 已经在其中),"[0-9.]+" 这个正则表达式就可以。 --------------------编程问答-------------------- 3楼说错了吧。
string.subString(a,b)
a起始位置
b结束位置
Dim strData As String = "N/W 0.100U/W 0PCS 0"
把你数据粘出来看了下,其实应该是
strData.Substring(3, 8).Trim()
或者
mid(strData,4,8).trim() --------------------编程问答-------------------- 去学正则表达式,.NET的正则表达式比较强大 --------------------编程问答--------------------
3lou shi dui di --------------------编程问答-------------------- 正则表达式是什么东西?
--------------------编程问答-------------------- 不懂VB,写了个简单的C#函数
楼主自己改改吧
static decimal get(string str)--------------------编程问答--------------------
{
int strStart = str.IndexOf("N/W") + 3;
int indexLength = str.IndexOf("U/W") - strStart;
string strAtLast = str.Substring(strStart, indexLength).Trim();
return Convert.ToDecimal(strAtLast);
}
b是长度,我搞错了。不过写的处理方法是对的。 --------------------编程问答-------------------- 我也想了解,谢谢LZ. --------------------编程问答-------------------- 没遇到过这种情况. --------------------编程问答-------------------- 查找'0.100'的位置,再LEFT,RIGHT不就行了 --------------------编程问答-------------------- 3楼对,7楼错
长度固定用
Dim strData As String = "N/W 0.100U/W 0PCS 0"
msgbox(strData.substring(6,5))
--------------------编程问答-------------------- 如果你追求性能,不论是WEB还windowsfrom建议用正则)"[0-9.]+"用法还是比较简单. --------------------编程问答-------------------- 正则来了:
Dim match As Match = Regex.Match("N/W 0.100U/W 0PCS 0 ", "(?<=N/W\s*)[^\s]*(?=U/W)")
要引用命名空间:
Imports System.Text.RegularExpressions
用的时候取match.value
--------------------编程问答-------------------- 晕死啦,C#的跑来这亮易做图了 --------------------编程问答--------------------
感谢你的指正,好像我前面已经把错误纠正过来了。让您再一次严重指摘出来感激之至。
请发表时候把错误点说的明确一点,要不误导了本不该误导的人,那样还不如不要发帖。
原始的数据,请问你看清楚没有?你以为一个“N/W“后面就是空两个空格,取到的就是要取得东西?
"N/W 0.100U/W 0PCS 0"
按照楼主的意思,应该取动态的值,不是固定的。
如果数据变成这样?"N/W 0.0100U/W 0PCS 0" 还要再重新写取值得方法?
还是建议看清楚后或测试后再下个结论,毕竟我测试过了。
补充:.NET技术 , VB.NET