Applescript स्ट्रिंग मिलान विफल हुआ


2

मैं यह चाहता हूं कि यदि वर्तमान तिथि स्ट्रिंग से मेल खाती है, तो यह "कार्य" लॉग करेगा। हालाँकि यह काम नहीं करता है।

set datesubmit to "27, May, 2016"
set trydate to {day, month, year} of (current date)
log (trydate)
log (datesubmit)
if trydate is equal to datesubmit then
    log ("works!")
end if

मैंने यह सुनिश्चित करने की कोशिश की कि वे दोनों स्ट्रिंग प्रकार चर हैं, लेकिन मैं इसे बराबर नहीं कर सकता। यह आउटपुट था:

(*27, May, 2016*)
(*27, May, 2016*)

क्या कोई मुझे बता सकता है कि मैं कहां गलत हूं?


2
आपके उदाहरण में datesubmitऔर trydateदोनों तार नहीं हैं और इसलिए आपका ifकथन ठीक वैसा ही हो रहा है क्योंकि यह माना जाता है कि वे समान नहीं हैं। आप logकमांड क्या दिखाते हैं इसकी उपस्थिति से नहीं जा सकते हैं ! आपको कक्षा संदर्भ , विशेष रूप से तिथि और पाठ पर अनुभाग पढ़ना चाहिए । बदले set trydate to {day, month, year} of (current date)के लिए set trydate to date string of (current date)और यह तब तारों के रूप में तुलना करनी चाहिए।
user3439894

1
मुझे नहीं लगता कि trydate एक स्ट्रिंग पर सेट है जैसा कि आप उम्मीद करते हैं क्योंकि अगर आप तारीख़ को "27May2016" में बदलते हैं तो यह काम करता है!
क्लानोमथ

क्लानोमथ ने इसे उत्तर के रूप में पोस्ट किया ताकि मैं आपको सही के रूप में चिह्नित कर सकूं।
ब्रैडमैन 1

@klanomath, आपने कहा " ... अगर आप तारीखें बदलकर" 27May2016 "कर लेते हैं तो यह काम करता है! ", जब मैं ऐसा करता हूं तो यह मेरे सिस्टम पर काम नहीं करता है।
user3439894

@ user3439894 अच्छी तरह से यह मेरे सिस्टम के लिए काम करता है। लॉग (ट्राइडेट) को लॉग (स्ट्रिंग के रूप में देखें) में बदलें। बताओ क्या होता है। क्लानोमथ ने मेरी समस्या हल कर दी।
ब्रैडमैन 1

जवाबों:


2

कुछ कोशिशों के बाद मैं इस नतीजे पर पहुँचता हूँ कि एक variableसेट to {day, month, year} of (current date)"दिन, महीने, साल" के साथ "स्ट्रिंग" नहीं है, लेकिन "दिनवार" है।

तो आप स्क्रिप्ट को बदल सकते हैं

set datesubmit to "27May2016"
set trydate to {day, month, year} of (current date)
log (datesubmit)
log (trydate)
if trydate as string is equal to datesubmit then
    log ("works!")
else
    log ("doesn't work!")
end if

जो बहुत सुरुचिपूर्ण नहीं है।

वैकल्पिक रूप से आप चुन सकते हैं:

set datesubmit to "Friday 27 May 2016"
set trydate to date string of (current date)
log (datesubmit)
log (trydate)
if trydate is equal to datesubmit then
    log ("works!")
else
    log ("doesn't work!")
end if

आपको हमेशा पहले दिन को पहले चर में जोड़ना होगा।

सबसे अच्छा प्रस्ताव (ओपी द्वारा स्वयं बनाया गया) है:

set datesubmit to "27, May, 2016"
set trydate to day of (current date) & ", " & month of (current date) & ", " & year of (current date) as string
log (datesubmit)
log (trydate)
if trydate is equal to datesubmit then
    log ("works!")
else
    log ("doesn't work!")
end if

मैंने अभी किया: (वर्तमान तिथि) और ", (और वर्तमान तिथि) और महीने", "और (वर्ष की वर्तमान तिथि) के दिन के लिए
trydate

तो आप "स्ट्रिंग के रूप में" अगर कथन में छोड़ सकते हैं।
ब्रैडमैन 75

@ ब्रैडमैन 175 मैंने इसी तरह के समाधानों की कोशिश की, लेकिन AppleScript-Editor ने हमेशा उनके बारे में शिकायत की क्योंकि मुझे सभी & "() आदि गलत मिले ...
klanomath

हालांकि मेरा काम नहीं करता है?
ब्रैडमैन 75

@ ब्रैडमैन 175 यह निश्चित रूप से काम करता है ;-)
क्लानोमथ

2

क्लानोमथ के सहायक उत्तर में व्यवहार्य समाधान शामिल हैं, लेकिन सबसे साफ और सरल दृष्टिकोण सीधे उसी प्रकार की वस्तुओं की तुलना करना है :

set datesubmit to {27, May, 2016}
set trydate to {day, month, year} of (current date)

if trydate = datesubmit then
    log "works!"
end if

दोनों दिनांक चर में अब 3-तत्व सूचियाँ ( { ..., ..., ... }) हैं जिनकी तुलना सीधे is equal toया सरलता से की जा सकती है =

ध्यान दें कि Mayएक अंतर्निहित महीना निरंतर है जो 5एक संख्यात्मक संदर्भ में मूल्यांकन करता है (यह एक स्ट्रिंग नहीं है )।


1
ओहो क्लानोमथ के स्थान लोल को चुराने की कोशिश कर रहा है। तुम्हारा बेहतर बेहतर लगता है।
ब्रैडमैन 1

if trydate = datesubmit thenपहली चीजों में से एक मैंने कोशिश की थी और यह मेरे सिस्टम पर काम नहीं करता था, निश्चित रूप से हालांकि क्यों नहीं। हालाँकि, आज यह काम कर रहा है! +1
user3439894

1
मुझे अभी पता चला कि यह काम क्यों नहीं किया ... उस समय मैंने कोशिश की थी कि यह अभी भी 26 वाँ है क्योंकि यह आधी रात तक मेरे स्थान पर था। तो यह वास्तव में नहीं outputting द्वारा काम किया (*works!*)क्योंकि यह अभी तक 27 वें नहीं था।
user3439894

मैं 2 को सही के रूप में चिह्नित क्यों नहीं कर सकता?
ब्रैडमैन 1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.