台灣最大程式設計社群網站
線上人數
1125
 
會員總數:246691
討論主題:190104
歡迎您免費加入會員
討論區列表 >> C# >> 如何在Textbox抓出文數字
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何在Textbox抓出文數字
價值 : 20 QP  點閱數:1090 回應數:9
樓主

Fish
門外漢
0 3
41 5
發送站內信

最近在寫一個條碼分析的程式
假設Textbox 輸入條碼為:=+123456=/ABC123
分析出來Label顯示:產品分類碼:123456
商品批號:ABC123
-----------到目前都很順利-----------------

我的程式碼為
LN3 = textBox1.Text.IndexOf("=+");
SN3 = textBox1.Text.IndexOf("=/");
if (LN3 != -1)
labLN.Text = "產品分類碼:" + UDIcode.Substring(LN3 + 3,6);
if (SN3 != -1)
label1.Text = "商品批號:" + UDIcode.Substring(SN3 + 2, 6);

問題就是就是之後有一個"="的符號抓不到
如果像上面寫的FN3 = textBox1.Text.IndexOf("=");
他會去抓"=+"跟"=/"的符號,
所以想寫成=後面為文數字的才抓,
但這樣的程式碼一直寫不出來,
FN3 = textBox1.Text.IndexOf("="+"^[A-Za-z0-9]+$");
類似這樣的想法,
該怎麼寫呢?


搜尋相關Tags的文章: [ 文數字、條碼、編碼、分析、Textbox取值 ] ,
本篇文章發表於2017-07-27 14:21
1樓
回應

春天
檢舉此回應
出問題的字串長什麼樣子?
依妳提供的字串
正規表示式為

本篇文章回覆於2017-07-27 14:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Fish
檢舉此回應
如果我Textbox輸入:=+123456=/ABC123=SDF456
我需要的Label顯示為
產品分類碼:123456
商品批號:ABC123
商品序號SDF456

但我現在的商品序號會去抓=+或=/後面的值
要怎麼抓出"= 文數字"?
如果是我現在寫得這樣
FN3 = textBox1.Text.IndexOf("="+"^[A-Za-z0-9]+$");
他抓到的值直接就是=^[A-Za-z0-9]+$
並沒有把^[A-Za-z0-9]+$這串判斷成文數字
本篇文章回覆於2017-07-27 14:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

春天
檢舉此回應
這有很多方法
1.

2.

3.

本篇文章回覆於2017-07-27 15:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

春天
檢舉此回應
不好意思,字串 "+123456=/ABC123=SDF456" 少了一個 "=",妳自己修改一下
本篇文章回覆於2017-07-27 15:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Fish
檢舉此回應
OK!我照著這樣子寫出來了!感謝你!!!

Regex r = new Regex(@"\=\w+");
label1.Text += "商品序號:" + r.Match(textBox1.Text).Value.Replace("=", string.Empty);

那如果我需要拆開呢?有辦法拆嗎?
就是可能要拆成
商品序號:SDF456
編號:SDF45
檢核碼:6

這種寫法的話要怎麼拆開比較好?
本篇文章回覆於2017-07-27 15:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

春天
檢舉此回應
妳指的是這樣?
本篇文章回覆於2017-07-27 15:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Fish
檢舉此回應
不是耶!
我是要把商品序號拆成兩部分~
不過我寫出來了!!
謝謝你!!!!!
本篇文章回覆於2017-07-27 16:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Fish
檢舉此回應
我現在又有一個問題了
就是呀
EXPLN = textBox1.Text.IndexOf("$$+0");
labEXP.Text = "效期:20" + textBox1.Text.Substring(EXPLN + 3, 2) + "/" + textBox1.Text.Substring(EXPLN + 5, 2) + "/" + textBox1.Text.Substring(EXPLN + 7,2)

輸入:$$+0170727
出來的值是2017/07/27

這樣的程式碼如果EXPLN小於9就會當掉
就是輸入的值:$$+0170727長度不夠長就整個程式碼都當掉了!!
想要寫一個Messagebox去防這個,應該要怎麼寫呢?
本篇文章回覆於2017-07-27 16:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

春天
檢舉此回應
if(textBox1.Text.Length < 9)
{
//MessageBox...
//return;
}
本篇文章回覆於2017-07-27 18:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.