请问如何截取一个字符串?

pzbpengzhibin 2008-04-28 04:36:55
在VB中:N/W 0.100U/W 0PCS 0 我要截取0.100怎么搞??
...全文
153 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
kulama777 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 tjficcbw 的回复:]
3楼对,7楼错
长度固定用
Dim strData As String = "N/W 0.100U/W 0PCS 0"
msgbox(strData.substring(6,5))
[/Quote]

感谢你的指正,好像我前面已经把错误纠正过来了。让您再一次严重指摘出来感激之至。
请发表时候把错误点说的明确一点,要不误导了本不该误导的人,那样还不如不要发帖。

原始的数据,请问你看清楚没有?你以为一个“N/W“后面就是空两个空格,取到的就是要取得东西?
"N/W 0.100U/W 0PCS 0"

按照楼主的意思,应该取动态的值,不是固定的。
如果数据变成这样?"N/W 0.0100U/W 0PCS 0" 还要再重新写取值得方法?

还是建议看清楚后或测试后再下个结论,毕竟我测试过了。
polarmirror 2008-05-05
  • 打赏
  • 举报
回复
晕死啦,C#的跑来这亮骚了
HimeTale 2008-05-05
  • 打赏
  • 举报
回复
正则来了:

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
水哥阿乐 2008-05-03
  • 打赏
  • 举报
回复
如果你追求性能,不论是WEB还windowsfrom建议用正则)"[0-9.]+"用法还是比较简单.
tjficcbw 2008-05-03
  • 打赏
  • 举报
回复
3楼对,7楼错
长度固定用
Dim strData As String = "N/W 0.100U/W 0PCS 0"
msgbox(strData.substring(6,5))

LennyAscetic 2008-05-03
  • 打赏
  • 举报
回复
查找'0.100'的位置,再LEFT,RIGHT不就行了
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
我也想了解,谢谢LZ.
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
没遇到过这种情况.
kulama777 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 firein 的回复:]
引用 7 楼 kulama777 的回复:
3楼说错了吧。

string.subString(a,b)
a起始位置
b结束位置


VB.NET code
Dim strData As String = "N/W 0.100U/W 0PCS 0"


把你数据粘出来看了下,其实应该是
strData.Substring(3, 8).Trim()
或者
mid(strData,4,8).trim()

3lou shi dui di
[/Quote]

b是长度,我搞错了。不过写的处理方法是对的。
conan304 2008-04-28
  • 打赏
  • 举报
回复
不懂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);
}
yiyaoyao58958 2008-04-28
  • 打赏
  • 举报
回复
正则表达式是什么东西?
firein 2008-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kulama777 的回复:]
3楼说错了吧。

string.subString(a,b)
a起始位置
b结束位置


VB.NET code
Dim strData As String = "N/W 0.100U/W 0PCS 0"




把你数据粘出来看了下,其实应该是
strData.Substring(3, 8).Trim()
或者
mid(strData,4,8).trim()
[/Quote]
3lou shi dui di
icansaymyabc 2008-04-28
  • 打赏
  • 举报
回复
去学正则表达式,.NET的正则表达式比较强大
kulama777 2008-04-28
  • 打赏
  • 举报
回复
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()
gshuhugs 2008-04-28
  • 打赏
  • 举报
回复
使用正则吧,
如果你想截取字符串中的数字和小数点(你的要求筛选0.100 已经在其中),"[0-9.]+" 这个正则表达式就可以。
herol 2008-04-28
  • 打赏
  • 举报
回复
如果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)

jjyjjyjjy 2008-04-28
  • 打赏
  • 举报
回复
如果是长度固定就是直接字符串截取,其它的基于规则的可用正则表达式
tgcx111 2008-04-28
  • 打赏
  • 举报
回复
string.subString(a,b)
a起始位置
b截取的长度
rotaryice 2008-04-28
  • 打赏
  • 举报
回复
mid(str,5,5)


mid(字符串,起始位置,截的长度)
apollolb2005 2008-04-28
  • 打赏
  • 举报
回复
有什么规律么? 是不是就是U/W前面的数字

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧