स्ट्रिंग को उड़ी में परिवर्तित करें


177

मैं स्ट्रिंग को जावा (एंड्रॉइड) में उड़ी में कैसे बदल सकता हूं? अर्थात:

String myUrl = "http://stackoverflow.com";

myUri = ???

जवाबों:


400

आप parseस्थैतिक विधि का उपयोग कर सकते हैंUri

Uri myUri = Uri.parse("http://stackoverflow.com")

4
मैं इस समाधान की कोशिश की है, लेकिन मैं इसके साथ एक समस्या है। पहले उरी को यूआरआई में बदलना होगा (यदि यह java.net पैकेज से है)। दूसरा इसमें "पार्स" कंस्ट्रक्टर नहीं है। क्या आपके पास कोई विचार है जो मैं गलत कर रहा हूं?
जर्गेन के।

2
Uriएक parseविधि डेवलपर के साथ एक वर्ग है ।android.com/ reference/ android/net/ Uri.html । एक विधि के बिना भी एक URIclass developer.android.com/reference/java/net/URI.html हैparse । तो उपयोग करने के लिए सही वर्ग है Uri। सुनिश्चित करें कि आपके पास सही आयात है
ccheneson

1
@ccheneson क्यों Uri और अधिक सही होना चाहिए तो URI? URI के साथ आप केवल createविधि का उपयोग कर सकते हैं । यह उड़ी के रूप में उपयोग करने के लिए सरल है। तो आपको उड़ी से क्या लाभ है?
काबा May१३

यह सही है। गलत आयात मेरी कष्टप्रद समस्याओं में से एक हैं।
ओमिड.एन

34

मैं सिर्फ java.net पैकेज का उपयोग कर रहा हूं । यहाँ आप निम्न कार्य कर सकते हैं:

String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);

URI, Uri से अलग है।
अली अलाई

7

यदि आप Kotlin और Kotlin android एक्सटेंशन का उपयोग कर रहे हैं , तो ऐसा करने का एक सुंदर तरीका है।

val uri = myUriString.toUri()

अपनी परियोजना के लिए कोटलिन एक्सटेंशन ( KTX ) को जोड़ने के लिए अपने ऐप मॉड्यूल के बिल्ड.ग्रेड से निम्नलिखित जोड़ें

  repositories {
    google()
}

dependencies {
    implementation 'androidx.core:core-ktx:1.0.0-rc01'
}

3

आप नीचे दिखाए गए अनुसार Uri.parse () का उपयोग करके एक स्ट्रिंग को उड़ी में पार्स कर सकते हैं:

Uri myUri = Uri.parse("http://stackoverflow.com");

निम्नलिखित एक उदाहरण है कि आप एक अंतर्निहित इरादे में अपने नए बनाए गए उरी का उपयोग कैसे कर सकते हैं। उपयोगकर्ताओं के फोन पर एक ब्राउज़र में देखा जा सकता है।

// Creates a new Implicit Intent, passing in our Uri as the second paramater.
Intent webIntent = new Intent(Intent.ACTION_VIEW, myUri);

// Checks to see if there is an Activity capable of handling the intent
if (webIntent.resolveActivity(getPackageManager()) != null){
    startActivity(webIntent);
}

एनबी: एंड्रॉइड यूआरआई और उरी के बीच अंतर है ।


-1

आप यूआरआई के साथ क्या करने जा रहे हैं?

यदि आप उदाहरण के लिए एक HttpGet के साथ इसका उपयोग करने जा रहे हैं, तो आप बस HttpGet आवृत्ति बनाते समय सीधे स्ट्रिंग का उपयोग कर सकते हैं।

HttpGet get = new HttpGet("http://stackoverflow.com");

2
लेकिन उदाहरण के लिए android.widget.ImageView.setImageURI- तो यह एक पूरी तरह से वैध सवाल है।
मार्टिन

1
वास्तव में यह इस सवाल का जवाब नहीं देता है
जुरगेन के।

-1

java.net.URIयदि URI अपने मानकों के लिए पूरी तरह से एनकोडेड नहीं है, तो जावा का पार्सर विफल होने वाला है। उदाहरण के लिए, पार्स करने का प्रयास करें http://www.google.com/search?q=cat|dog:। ऊर्ध्वाधर पट्टी के लिए एक अपवाद फेंक दिया जाएगा।

urllib एक स्ट्रिंग को a में बदलना आसान बनाता है java.net.URI। यह पूर्व-प्रक्रिया करेगा और URL से बच जाएगा।

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.