अपल्सस्क्रिप्ट के साथ स्ट्रिंग में अंतिम लगातार अंक अनुक्रम खोजें


-2

मेरी स्क्रिप्ट में मेरे जैसे तार हैं G014_1998_24.jpgया G024_2006_08.jpg। इन तारों से मुझे अप्प्सस्क्रिप्ट के माध्यम से अंतिम लगातार अंक निकालने की आवश्यकता है । इसलिए मेरे उदाहरण के तार में मुझे अनुक्रमों को प्राप्त करने की आवश्यकता होगी 24या 08(बाद वाले अधिमानतः अग्रणी शून्य के साथ)।

वहाँ एक applescript के साथ यह करने के लिए कोई रास्ता नहीं है?

संपादित करें: तार भी ऐसा दिखाई दे सकता: G014_1998.jpg, G014_1998_A.jpg, G014_1998_AB.jpgआदि (इन मामलों में स्क्रिप्ट हमेशा पुनः प्राप्त करना चाहिए 1998)। इसलिए मैं वास्तव में अंतिम अंक अनुक्रम की तलाश कर रहा हूं और इन अंकों की स्थिति पर भरोसा नहीं कर सकता, क्योंकि मैं पदों की भविष्यवाणी नहीं कर सकता।


वे अंततः एक लूप में होंगे। हालाँकि, मैं खुद लूप स्ट्रक्चर का ध्यान रखूंगा, यह वह नहीं है, जिसके साथ मैं परेशान हूं। इसलिए मुझे यह जानना होगा कि एक तार से अंतिम अंक अनुक्रम कैसे निकाला जाए (जो उपरोक्त सभी रूपों को ले सकता है)।
मैडिनो

जवाबों:


1

दो संभावित तरीके:

शुद्ध AppleScript

    set alphabet to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    set the text item delimiters of AppleScript to ¬
        {space} & characters of the alphabet & {".", "_"}
    set a to text items of "G024_2006_08.jpg" as text
    set b to text items of "G014_1998_AB.jpg" as text

    get last word of a --> returns "08"
    get last word of b --> returns "1998"

बैश से मदद

यदि आपके फ़ाइल नाम और भी अधिक जटिल हैं, तो उपयोग करें do shell scriptऔर एक नियमित अभिव्यक्ति मैच:

    set filename to "G014_1998_AB.jpg"

    return do shell script (["echo ", filename, ¬
        " | egrep -o -e '\\d+' | tail -1"] as text)

    --> returns "1998"

सुझाव के लिए @ user3439894 के लिए धन्यवाद कि मैं tail AppleScript की कमांड का उपयोग करने के बजाय शेल स्क्रिप्ट के हिस्से के रूप में लागू करता हूं get last paragraph of । यह थोड़ा धीमा है।


2
यदि आप इसका उपयोग करने जा रहे हैं do shell scriptतो इसे संसाधित क्यों न करें ताकि जो लौटा है वह वही है जो यह चाहता है और इसे कोड की दो पंक्तियों में न करें चार, उदा set theString to "G014_1998_AB.jpg"और फिरset theNumber to do shell script "egrep -o -e '\\d+'<<<'" & theString & "' | tail -1"
user3439894

@ user3439894 मैं वास्तव में आपका तरीका पसंद करता हूं। यदि मैं आपके सुझाव का उपयोग करने के लिए अपना उत्तर अपडेट करूं तो मन? या फिर शिष्टाचार ऐसा है कि दिए गए विकल्प टिप्पणियों के रूप में रहना चाहिए, इसलिए ओपी देख सकता है कि सुझाए गए सुधारों के बीच क्या पेशकश की गई थी?
CJK

इसका इस्तेमाल करने के लिए स्वतंत्र महसूस करें। :)
user3439894

जब मुझे यह उत्तर मिलता है, और यह दिलचस्प है ... मैं इन समाधानों को इस स्थिति को संबोधित करने में सक्षम नहीं देखता: क्या होगा यदि फ़ाइल नाम इस तरह की फ़ाइलों की एक उत्पन्न सूची के सभी आइटम हैं ... {" G014_1998_24। ?
wch1zpink

@ wch1zpink, मैं यह नहीं देखता कि आपने कहां से उद्धृत किया है। यदि कुछ भी हो, तो मुझे इस सवाल के खिलाफ एक टिप्पणी का संभावित कनेक्शन दिखाई देता है जो विशेष रूप से बताता है कि एक सूची के माध्यम से लूपिंग मुद्दा नहीं है: "वे अंततः एक लूप में होंगे। हालांकि, मैं लूप संरचना की देखभाल खुद करूंगा, यह नहीं है। मुझे क्या समस्या हो रही है। इसलिए मुझे यह जानना होगा कि एक तार से अंतिम अंक अनुक्रम कैसे निकाला जाए (जो उपरोक्त सभी रूपों को ले सकता है)
CJK

1

यह मेरे लिए सिएरा के नवीनतम संस्करण का उपयोग करके काम करता है

property myStrings : {"G014_1998_24.jpg", "G024_2006_08.jpg"}

set strippedStrings to {}

repeat with i from 1 to number of items in myStrings
    set this_item to item i of myStrings
    set end of strippedStrings to items -5 thru -6 of this_item as string
    -- uncomment next line if u prefer integers returned instead (wont retain leading zero's)
    -- set end of strippedStrings to items -5 thru -6 of this_item as string as integer
end repeat

यदि आप अपनी सूची को आरोही क्रम में क्रमबद्ध करना चाहते हैं, तो स्क्रिप्ट का यह संस्करण स्क्रिप्टिंग के अलावा SATIMAGE स्क्रिप्टिंग असाइनमेंट का उपयोग करता है

property myStrings : {"G014_1998_24.jpg", "G024_2006_08.jpg", "G024_2006_13.jpg"}
property sortedStrippedStrings : {}

set strippedStrings to {}

repeat with i from 1 to number of items in myStrings
    set this_item to item i of myStrings
    set end of strippedStrings to items -5 thru -6 of this_item as string
end repeat
-- Uses SATIMAGE scripting addition to sort list ascending 
set sortedStrippedStrings to sortlist strippedStrings with ascending

धन्यवाद @ wch1zpink! हालांकि, मुझे अब एहसास हुआ, मुझे उन संभावित तारों पर अधिक विशिष्ट होना चाहिए था जो मुझे मिल सकते थे। मैं क्षमाप्रार्थी हूं। अंतिम अंक अनुक्रम की स्थिति हमेशा समान नहीं होती है और मुझे वास्तव में अंतिम अंक अनुक्रम को प्राप्त करने की आवश्यकता होती है, चाहे वह कोई भी हो। ऊपर मेरा संपादन देखें।
मैदीनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.