जावा # के साथ C # शब्दशः तार के बराबर है


101

त्वरित प्रश्न। क्या जावा में तार लगाने के लिए @ के बराबर है:

उदाहरण के लिए, मैं @"c:\afolder\afile"C # में कर सकता हूं और इसे करने के बजाय प्रसंस्करण के दौरान भागने वाले पात्रों को अनदेखा करना चाहिए "c:\\afolder\\aFile"। क्या कोई जावा समकक्ष है?

हम्मम: स्टैकओवरफ़्लो मुझ पर बच रही है .. योग्य। दूसरा उदाहरण पढ़ना चाहिए:

सी: (डबल बैकस्लैश) afolder (डबल बैकस्लैश) aFile


2
संभव डुप्लिकेट: stackoverflow.com/questions/2018556/…
कोडेडडिक्ट

2
शीर्षक को स्पष्ट करने की स्वतंत्रता को लिया क्योंकि @इसका उपयोग भाषा के खोजशब्दों के साथ-साथ पहचानकर्ता के रूप में भी किया जा सकता है।
जॉय

@unicornaddict - वास्तव में यही सवाल है। क्षमा याचना करते समय नहीं देखा। @ जोहान्स - अच्छी चाल .. धन्यवाद
साइमन रिग्बी

यदि आप विंडोज में बस इतना ही करना चाहते हैं, और आप विंडोज एक्सपी या नए का उपयोग करते हैं (और आपको करना चाहिए!), तो आप सिर्फ फाइल फाइल कर सकते हैं = नई फाइल ("C: / afolder / afile"); दूसरी ओर, यदि आप अधिक पोर्टेबल होना चाहते हैं, तो आपको @CPerkins के उत्कृष्ट उत्तर को देखना चाहिए।
हाकॉन लोटवेट

नोट (जनवरी 2018), कच्चे स्ट्रिंग शाब्दिक जावा (JDK 10 या अधिक) के लिए आ सकता है: देखें जावा में, क्या उद्धरण से बचने के लिए बिना स्ट्रिंग शाब्दिक लिखने का एक तरीका है?
वोनक

जवाबों:


77

नहीं । स्ट्रिंग को बचाना / बाहरी करना आपकी एकमात्र पसंद है।


7
मैं @ "स्ट्रिंग" और $ "स्ट्रिंग {i}" के साथ c # 6 प्यार करता हूं और जावा से बहुत अधिक वायदा करता हूं
गुइडो मोचा

4
C # से जावा तक आ रहा है यह अक्सर बहुत सारे तरीकों से एक कदम नीचे है
माइककूल जूल

33

नहीं, जावा में शब्दशः स्ट्रिंग शाब्दिक नहीं हैं ।

आपको लगता है कि एक जावा की तरह (और जावा वी एम आधारित) भाषा चाहते हैं करता है , हालांकि, आप को देखने के लिए चाहते हो सकता है ग्रूवी जो स्ट्रिंग शाब्दिक के विभिन्न रूपों


सबसे पहले लिंक (शब्दशः स्ट्रिंग शाब्दिक) को अंक "Visual Studio 2003 सेवानिवृत्त तकनीकी प्रलेखन" groovy.codehaus.org लिंक टूट चुके हैं
Vladas माएर

1
@ace: वर्तमान "स्ट्रिंग" लेख में अपडेट किया गया, जिसमें शब्दशः स्ट्रिंग शाब्दिकों पर एक अनुभाग शामिल है। साथ ही ग्रूवी लिंक को भी अपडेट किया।
जॉन स्कीट

16

जैसा कि केंट और जॉन ने कहा है, नहीं।

मैं सिर्फ यह बताने के लिए जवाब दे रहा हूं कि यदि आपके विशेष मामले के लिए भी, यह सामान्य मामला है, तो एक से अधिक कार्यक्रमों को बंद मान लेना एक बुरा विचार होगा।

जावा प्रोग्राम केवल विंडोज की तुलना में अधिक प्लेटफार्मों पर चलते हैं, और अन्य प्लेटफार्मों में अलग-अलग फ़ाइल सीमांकक हैं। इसलिए बच गए बैकस्लैश से निपटने के बजाय, फ़ाइल सेपरेटर गुण प्राप्त करके अपने विशेष उदाहरण को संभालने का सही तरीका है:


    String sep = System.getProperty("file.separator");
    String filename = ROOTDIR + sep + "folder" + sep + "afile";

जहाँ आपने कुछ नीति के आधार पर अलग से ROOTDIR बनाया है - न केवल प्लेटफ़ॉर्म, बल्कि आप चाहते हैं कि आपका "फ़ाइल" वास्तविक फ़ाइल सिस्टम रूट के सापेक्ष हो, या उपयोगकर्ता के होम डाइरेक्टरी के सापेक्ष हो।

लेकिन निश्चित रूप से, फ़ाइल विभाजक संपत्ति का उपयोग करना आपके कार्यक्रमों को अधिक व्यापक रूप से उपयोग करने योग्य बनाता है। क्या यह अधिक काम है? हाँ। जैसा कि वांडा साइक्स कहते हैं, "लेकिन यह इसके लायक है"।


1
हिया और धन्यवाद। यह तथ्य कि अप्रासंगिक के मामले में मेरे मामले में इसका 'फ़ाइलनाम' है। मेरा सारा कोड एक स्ट्रिंग ले रहा है (या कोशिश कर रहा है) और इसे पास कर रहा है। मैं वास्तव में एक वेब सेवा पर इसे पारित करने के अलावा इसके साथ कुछ भी नहीं करता हूं। मैं जावा से कॉल की जा रही एसी # डब्ल्यूसीएफ सेवा से प्रतिक्रिया का परीक्षण कर रहा था। के रूप में मैं सिर्फ एक परीक्षा कोडिंग कठिन था यह इस बिंदु पर था कि मैं इस सीमा की खोज की। मैं, वास्तव में स्ट्रिंग के साथ कुछ भी 'फ़ाइल आधारित' नहीं कर रहा हूँ।
साइमन रिग्बी

2
Verbatim स्ट्रिंग्स regex पैटर्न के लिए महान हैं।
गॉर्डन बीन

12

वर्तमान में यह जावा में समर्थित नहीं है, लेकिन भविष्य के रिलीज में उपलब्ध हो सकता है। 2018/01/23 पर जेईपी 326: रॉ स्ट्रिंग लिटरल्स बनाया गया था

Https://bugs.openjdk.java.net/browse/JDK-8196004 पर प्रगति देखें

संभवतः किसी दिन आप इसे कर पाएंगे:

`c:\afolder\afile`

UPDATE: JEP ने JDK 12: 326: रॉ स्ट्रींग लिटरल्स (प्रीव्यू) को छोड़ने का प्रस्ताव दिया। आप यहां के तर्क को पढ़ सकते हैं: http://mail.openjdk.java.net/pipermail/jdk/dev/2018-Deidential/002402.html

और अधिक विवरण यहाँ https://bugs.openjdk.java.net/browse/JDK-8215682

निचला रेखा : निकट भविष्य में जावा में शब्दशः तार नहीं होंगे। और यहां तक ​​कि अगर यह दिखाई देगा, बल्कि `` नहीं होगा।


1
यह देखते हुए कि इस मामले पर सबसे लोकप्रिय चर्चा में से एक है, जेईपी 326 को वापस ले लिया गया है। चर्चा को जनवरी 2019 में फिर से शुरू किया गया था , और अब JEPK13 रिलीज़ के लिए JEP 355 में ट्रैक किया गया है।
एनपीआरएस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.