Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,913

HOME > .NET Framework > Forum > เกี่ยวกับการนับตัวเลขที่อยู่ในชุดข้อความ และการตัดตัวเลขออกจากชุดข้อความ



 

เกี่ยวกับการนับตัวเลขที่อยู่ในชุดข้อความ และการตัดตัวเลขออกจากชุดข้อความ

 



Topic : 134430



โพสกระทู้ ( 202 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



Code (VB.NET)
Private Function pkSuc()

        Dim midtxt As String
        Dim txtpk As String
        Dim pkno As String = txtPKNo.Text
        Dim count As Integer = 0
        'ตอนแรกคำสั่งนับเฉพาะตัวเลขยังไม่มีครับ เพิ่งจะได้โจทย์มาใหม่
        For Each C In pkno
            If Char.IsNumber(C) Then
                count = count + 1
            End If
            'เมื่อได้จำนวนตัวเลขในข้อความแล้ว อยากจะสร้างเงื่อนไขว่า 
            'ถ้าตัวเลขในข้อความ เท่ากับ 9 digit ให้ตัดเหลือแค่ 8 digit ถ้ามากกว่าหรือน้อยกว่าไม่ต้องทำอะไร
        Next

        'เดิมทีมีแค่คำสั่งนี้ครับ
        If txtPKNo.TextLength = 9 Then
            midtxt = Mid(pkno, 1, 8)
            txtpk = midtxt
        Else
            txtpk = pkno
        End If
        Return txtpk

    End Function


เริ่มเลยนะครับ
คือเดิมทีผมได้โจทย์ว่า ถ้าข้อความที่กรอกลง textbox มี 9 หลักเมื่อไหร่ ให้ตัดเหลือแค่ 8 หลัก

แต่ทีนี้สิ่งที่ผมเข้าใจนั้นผิด โจทย์คือ เมื่อกรอกข้อความไป 1 ชุด เช่น AB123456789 ให้ตัดข้อความเหลือ AB12345678 จากตัวอย่างคือไม่สนใจว่า ตัวหนังสือจะมีกี่ตัว แต่จะนับเฉพาะตัวเลขเท่านั้นแล้วตัดตัวที่ 9 ออกไป

จากโค้ดที่ผมเขียนไว้ข้างต้น ผมว่าการนับตัวเลขน่าจะไม่มีปัญหาละ เหลือแค่จะตัดยังไง เพราะ ตัวอักษรอาจจะเป็น dynamic อาจจะเพิ่ม ลด หรือ ไม่มี หรืออาจจะ เป็น A12-3456789 แล้วตัดให้เหลือ A12-345678

ขอความกรุณาด้วยครับ ตอนนี้มืดมนไปหมด



Tag : .NET, VB.NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-10-30 09:57:00 By : Pla2todkrob View : 49 Reply : 6
 

 

No. 1



โพสกระทู้ ( 7,977 )
บทความ ( 2 )



สถานะออฟไลน์


ถ้ารูปแบบมันคงที่ คือ ตัวอักษรอยู่หน้า ตัวเลขอยู่หลัง ก็แค่แบ่งตัวอักษรกับตัวเลขแยกเป็น2ข้าง แล้วเอาตัวเลขมาเข้าสูตรเดิม
เสร็จแล้วก็นำมารวมกันใหม่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-10-30 10:07:43 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 202 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-10-30 10:07:43
รายละเอียดของการตอบ ::
ครับป๋า แต่ปัญหาคือรูปแบบมันไม่คงที่นี่แหละครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-10-30 10:10:24 By : Pla2todkrob
 

 

No. 3



โพสกระทู้ ( 202 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

Code (VB.NET)
Function output(ByVal textbox As String)

        Dim txtlimit As String = String.Empty
        Dim txtoutput As String = String.Empty
        Dim txtinput As String = textbox
        Dim count As Integer = 0
        Dim txtchar As String = String.Empty
        Dim txtnum As String = String.Empty
        Dim txtall As String = String.Empty
        For i As Integer = 1 To Len(textbox)
            txtall = Mid(textbox, i, 1)
            Select Case txtall
                Case "0" To "9"
                    txtnum = txtnum + txtall
                    count = count + 1
                Case Else
                    txtchar = txtchar + txtall
            End Select
        Next i
        If txtnum.Length = 9 Then
            txtnum = Mid(txtnum, 1, 8)
        End If
        txtoutput = txtchar + txtnum
        Return txtoutput

    End Function


ล่าสุดผมเขียนได้แบบนี้ครับ แต่ก็ยังผิดอยู่ดี
ถ้า input AB123456789 output AB12345678 --- ถูกต้อง
แต่ถ้า input AB12-3456789 output AB-12345678 --- ผิด

T-T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-10-30 10:39:15 By : Pla2todkrob
 


 

No. 4



โพสกระทู้ ( 7,977 )
บทความ ( 2 )



สถานะออฟไลน์


AB12-3456789 รูปแบบที่ต้องการคืออะไร
AB12-345678 หรือเปล่า

คือคอมพิวเตอร์มันเป็นเครื่องจักร ผู้เขียนโปรแกรมต้องกำหนดรูปแบบที่ชัดเจนให้กับมัน
รูปแบบที่ควรจะเป็นมีอะไรบ้าง ประเภทที่ dynamic จริงๆ ไม่มี เพียงแต่มีหลายรูปแบบ
ก็ต้อง loop ใช้ if else จนครบนั้นแหล่ะ

หรือก็ควรใช้ regular expression มาช่วย
วิธีการ
1 กำหนด รูปแบบที่ควรจะเป็น เช่น
/^[A-Za-z]+([0-9]+)/
/^[A-Za-z]+([0-9\-]+)/

2 เมื่อได้รูปแบบทีแน่นอน ก็ค่อยเอาไปแยกตามรูปแบบนั้นๆ

ส่วนโค๊ดของจขกท ลองเพิ่มตัวแปร ซัก ตัว
Code (VB.NET)
dim inNumber as boolean = false ' เพื่อไว้บอกว่าตอนนี้ เป็นช่วงของตัวเลขแล้วนะ
....
for i = .....
    txtall=mid(...)    
    select txtall
    case 0 to 9
       countnum++
       if inNumber then begin
          if countnum = 8 then begin
             return mid( textbox, 1, i)  ' สิ้นสุดการนับ
          end
       end
    end select
end for
return textbox


ไม่ได้ทดสอบนะ และ ถูกไวยกรณ์หรือเปล่าไม่รู้ เช็คเอาเอง ไม่ได้เขียนนานแล้ว
ดูแค่ algorithm พอ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-10-30 11:10:16 By : Chaidhanan
 


 

No. 5



โพสกระทู้ ( 202 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-10-30 11:10:16
รายละเอียดของการตอบ ::
แนวคิดน่าสนใจมากเลยครับป๋า
ขอบคุณมากครับ เดี๋ยวจะลองเอาไปโมดูครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-10-30 14:06:21 By : Pla2todkrob
 


 

No. 6



โพสกระทู้ ( 3,986 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ลองใช้ regex ดูครับ

555
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-10-30 14:53:18 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เกี่ยวกับการนับตัวเลขที่อยู่ในชุดข้อความ และการตัดตัวเลขออกจากชุดข้อความ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่