نمایش نتایج 1 تا 17 از 17

نام تاپیک: اطلاعات داخل فیلد

  1. #1

    اطلاعات داخل فیلد

    با سلام
    من داخل یه فیلد اطلاعاتم به این صورت هستش :

    مثلاً 1~3-5-7-8-9~15-20

    حالا چطور می تونم تمام اعداد داخل این فیلد رو خارج کنم.

    که اینجوری بشه : 1,2,3,5,7,8,9,10,11,12,13,14,15,20

  2. #2

    نقل قول: اطلاعات داخل فیلد

    ' regex:
    "\d+"

  3. #3

    نقل قول: اطلاعات داخل فیلد

    متوجه نشدم
    یکم بیشتر توضیح میدید.

  4. #4

    نقل قول: اطلاعات داخل فیلد

    من با اکسس کار نکردم نمیدونم راهی برای کار با ریجکس داره یا نه ولی اگه داشته باشه از "+d\" میتونید استفاده کنید برای پیدا کردن اعداد توی یک رشته.
    آخرین ویرایش به وسیله ASHKANLAEI : پنج شنبه 30 آبان 1398 در 16:39 عصر

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    بهترین راهنمایی همین استفاده از RegExp بود!

    اول باید رفرنس موردنیاز رو به برنامه اضافه کنین:
    1.PNG

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    Option Compare Database
    Option Explicit


    Public Function ExtractNumbers(x As Variant) As Variant
    Dim RE As New RegExp
    RE.Global = True
    RE.Pattern = "\d+"
    Dim Numbers
    Set Numbers = RE.Execute(x)
    Dim i As Integer
    For i = 1 To Numbers.Count
    Debug.Print Numbers(i - 1)
    Next
    End Function



  7. #7
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    روش استفاده :

    2.PNG

  8. #8
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    برنامه نمونه :
    فایل های ضمیمه فایل های ضمیمه

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    نقل قول نوشته شده توسط mrn181 مشاهده تاپیک
    با سلام
    من داخل یه فیلد اطلاعاتم به این صورت هستش :

    مثلاً 1~3-5-7-8-9~15-20

    حالا چطور می تونم تمام اعداد داخل این فیلد رو خارج کنم.

    که اینجوری بشه : 1,2,3,5,7,8,9,10,11,12,13,14,15,20
    البته الان که دقت میکنم شما با ~ اومدین range تعریف کردین
    اینجوری یک کم سخت تر میشه ولی راه باز هم همین regexp است.

  10. #10

    نقل قول: اطلاعات داخل فیلد

    دستتون درد نکنه.

  11. #11

    نقل قول: اطلاعات داخل فیلد

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    البته الان که دقت میکنم شما با ~ اومدین range تعریف کردین
    اینجوری یک کم سخت تر میشه ولی راه باز هم همین regexp است.
    دستتون درد نکنه.
    فقط بیزحمت می شه بگید برای اینکه
    اینجوری بشه : 1,2,3,5,7,8,9,10,11,12,13,14,15,20 چیکار باید کرد.
    اگه راهنمایی کنید ممنون می شم

  12. #12
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    1- هنوز برای من مشخص نیست که خروجی قراره چی باشه؛ من فقط یک حلقه گذاشتم که اعداد رو چاپ میکنه.
    شما میتونین خروجی تابع رو یک array یا collection یا dictionary یا جدول یا ... بگذارین.

    2- برای اینکه ترتیب خروجی دقیقا همین ترتیب لیست باشه برای range ها از collection استفاده میکنیم که نیاز به یک رفرنس داره.
    کار با کالکشن به مراتب راحتتر از کار با dynamic array ها هست.
    اگر ترتیب لیست مهم نیست به کالکشن هم نیازی نیست.

    3.PNG

  13. #13
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    روش کار به این صورت هست که اول برای range ها scan میکنیم،
    بعد هر range رو با سری اعدادش جایگزین میکنیم
    نهایتا مثل تابع قبلی همه اعداد رشته جدید رو استخراج میکنیم

  14. #14
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    Option Compare Database
    Option Explicit
    Public Function ExtractNumbers(x As Variant) As Variant
    Dim RE As New RegExp
    Dim Numbers
    Dim Ranges
    Dim Range
    Dim i, j, k As Integer
    RE.Global = True
    RE.Pattern = "\d+~\d+"
    Set Ranges = RE.Execute(x)
    For i = 1 To Ranges.Count
    RE.Pattern = "\d+"
    Set Range = RE.Execute(Ranges(i - 1))
    Dim D As New Dictionary
    For j = Range(0) To Range(1)
    D.Add j, D.Count
    Next j
    x = Replace(x, Ranges(i - 1), Join(D.Keys, ","))
    Set D = Nothing
    Next i
    Set Numbers = RE.Execute(x)
    For i = 1 To Numbers.Count
    Debug.Print Numbers(i - 1)
    Next
    End Function


  15. #15
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    روش استفاده:

    4.PNG

  16. #16
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: اطلاعات داخل فیلد

    برنامه نمونه
    فایل های ضمیمه فایل های ضمیمه

  17. #17

    نقل قول: اطلاعات داخل فیلد

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    برنامه نمونه
    خیلی خیلی ممنونم از کمکتون.
    آخرین ویرایش به وسیله mrn181 : جمعه 01 آذر 1398 در 22:24 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •