में विशेष वर्णों से बचने के लिए मैं एक विधि लिखने की कोशिश कर रहा हूं जो PHP में mysqli_real_escape_string
जैसा ही है। यह एक स्ट्रिंग लेता है और किसी भी 'खतरनाक' पात्रों से बच निकलता है। मैंने एक ऐसी विधि की तलाश की है जो मेरे लिए यह करेगी लेकिन मुझे कोई नहीं मिल रहा है। तो मैं खुद को लिखने की कोशिश कर रहा हूं।रूबी: स्ट्रिंग
यह वही है मैं अब तक किया है (मैं Rubular.com पर पैटर्न परीक्षण किया है और यह काम किया):
# Finds the following characters and escapes them by preceding them with a backslash. Characters: ' " . */\ -
def escape_characters_in_string(string)
pattern = %r{ (\'|\"|\.|\*|\/|\-|\\) }
string.gsub(pattern, '\\\0') # <-- Trying to take the currently found match and add a \ before it I have no idea how to do that).
end
और मैं स्ट्रिंग मैं बदलना चाहते हैं के रूप में start_string
उपयोग कर रहा हूँ, और मैं क्या चाहते start_string
रूप correct_string
में बदलने के लिए:
start_string = %("My" 'name' *is* -john- .doe. /ok?/ C:\\Drive)
correct_string = %(\"My\" \'name\' \*is\* \-john\- \.doe\. \/ok?\/ C:\\\\Drive)
कर सकते हैं किसी को कोशिश करते हैं और मुझे पता लगाने में मदद क्यों मैं अपने वांछित निर्गम (correct_string
) नहीं मिल रहा है या मुझे बताओ जहां मैं एक विधि है कि यह करता है, या और भी बेहतर मीटर बता पा सकते हैं ई दोनों? आपका बहुत बहुत धन्यवाद!
तो तुम '' start_string' escape_characters_in_string' में डाल दिया है और आप नहीं मिलता है क्या तुम ' उम्मीद कर रहे हैं? वह गलत आउटपुट क्या है? आपने हमें जो देखा है उसे हमने दिया है, अब आप जो वास्तव में देखते हैं उसका उपयोग करें ... – masher
जब मैं 'escape_characters_in_string (start_string) 'के परिणाम डालता हूं, कुछ भी नहीं बदलता है; यह 'start_string' – agentbanks217
Regexp.escape (str) –