当前位置:编程学习 > C#/ASP.NET >>

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

在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的正则表达式比较强大 --------------------编程问答--------------------
引用 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 --------------------编程问答-------------------- 正则表达式是什么东西?
--------------------编程问答-------------------- 不懂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);
}
--------------------编程问答--------------------
引用 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


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#的跑来这亮易做图了 --------------------编程问答--------------------
引用 16 楼 tjficcbw 的回复:
3楼对,7楼错 
长度固定用 
Dim strData As String = "N/W   0.100U/W      0PCS       0" 
msgbox(strData.substring(6,5)) 


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

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

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

还是建议看清楚后或测试后再下个结论,毕竟我测试过了。
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,