কোয়েরিস্ট্রিং ছাড়াই url পান


189

আমার এই জাতীয় URL রয়েছে:

http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye

আমি এটি থেকে পেতে চাই http://www.example.com/mypage.aspx

আপনি আমাকে বলতে পারেন কিভাবে আমি এটি পেতে পারি?

উত্তর:


129

তুমি ব্যবহার করতে পার System.Uri

Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = String.Format("{0}{1}{2}{3}", url.Scheme, 
    Uri.SchemeDelimiter, url.Authority, url.AbsolutePath);

অথবা আপনি ব্যবহার করতে পারেন substring

string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));

সম্পাদনা: মন্তব্যগুলিতে বিলিফ্রেশের পরামর্শ প্রতিফলনের জন্য প্রথম সমাধানটি সংশোধন করা।


6
url.AbsolvePath কেবলমাত্র URL (/mypage.aspx) এর পাথ অংশটি প্রদান করে; আপনি যে পুরো URL চেয়েছিলেন তার জন্য url.Scheme (http) + Uri.SchemeDelimiter (: //) + url.Authority (www.somesite.com) প্রিপেন্ড করুন
রায়ান

20
Uri.GetLeftPart পদ্ধতি হিসাবে উল্লেখ করেছে সহজ stackoverflow.com/questions/1188096/...
এডওয়ার্ড ওয়াইল্ড

substringসেখানে যদি কোনো ক্যোয়ারী স্ট্রিং পদ্ধতি ত্রুটি দেব। string path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);পরিবর্তে ব্যবহার করুন।
stomy

378

এখানে একটি সহজ সমাধান:

var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);

এখান থেকে নেওয়া হয়েছে: ক্যোয়ারী স্ট্রিং কেটে ফেলা হচ্ছে এবং ক্লিন ইউআরএল সি # এএসপি.এন.


17
একটি লাইন সংস্করণ:return Request.Url.GetLeftPart(UriPartial.Path);
jp2code

uri.GetComponent(উরির অংশ পাওয়ার জন্য আর একটি দুর্দান্ত পদ্ধতি। এই দুজনের সম্পর্কে আমি এখন অবধি জানতাম না!
অ্যারোনলএস

38

এটি আমার সমাধান:

Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty);

35
Request.RawUrl.Split(new[] {'?'})[0];

2
আপনি এটি সম্পূর্ণ ইউরি ছাড়াই ব্যবহার করতে পারবেন তার জন্য আমি এটি পছন্দ করি।
কিংফফ হাইপোক্রিটস

মনে রাখবেন যে রাখুন RawUrlURL টি পেতে হবে আগে URL টি নতুন করে লেখা হয়, তাই সম্ভবত ব্যবহার AbsoluteUri? Request.Url.AbsoluteUri.Split('?')[0]
রক্ষক এক


16

আমার পথ:

new UriBuilder(url) { Query = string.Empty }.ToString()

অথবা

new UriBuilder(url) { Query = string.Empty }.Uri

নেট কোর ১.০ প্রকল্পের জন্য এটি আমি ব্যবহার করি কারণ এর কোনও পদ্ধতি নেই Uri.GetLeftPart। নেট কোর (১.১) এর সর্বশেষ সংস্করণে সেই পদ্ধতিটি থাকা উচিত (ক্যান্ট কনফার্ম হওয়া উচিত কারণ আমি এখনকার নেট কোর ১.১ এ নেই)
সুলেলেক

1
আমি এটি পছন্দ করি কারণ ইউআরআই বিল্ডিং হ'ল ইউরিবিল্ডার ঠিক তার জন্য। অন্য সমস্ত উত্তর (ভাল) হ্যাক হয়।
নাইন লেজ

11

আপনি Request.Url.AbsolutePathপৃষ্ঠার নাম পেতে এবং Request.Url.Authorityহোস্টের নাম এবং পোর্ট ব্যবহার করতে পারেন । আমি বিশ্বাস করি না যে আপনি যা চান ঠিক তা দেওয়ার জন্য কোনও সম্পত্তি অন্তর্নির্মিত আছে তবে আপনি সেগুলি নিজেই একত্রিত করতে পারেন।


1
এটি আমাকে /mypage.aspx দিচ্ছে, আমি যা চাইছিলাম তা নয়।
রকি সিং

4

বিভক্ত () পার্থক্য

আমি কেবল রেফারেন্সের জন্য এই প্রকরণটি যুক্ত করতে চাই। ইউআরএলগুলি প্রায়শই স্ট্রিং হয় এবং তাই এর Split()চেয়ে পদ্ধতিটি ব্যবহার করা সহজ Uri.GetLeftPart()। এবং Split()আপেক্ষিক, খালি এবং নাল মানগুলির সাথে কাজ করার জন্যও তৈরি করা যেতে পারে যেখানে উরি একটি ব্যতিক্রম ছুঁড়ে ফেলে। অতিরিক্তভাবে, ইউআরএলগুলিতে একটি হ্যাশও থাকতে পারে /report.pdf#page=10(যা একটি নির্দিষ্ট পৃষ্ঠায় পিডিএফ খুলবে)।

নিম্নলিখিত পদ্ধতিটি এই জাতীয় সমস্ত ধরণের সাথে কাজ করে:

   var path = (url ?? "").Split('?', '#')[0];

উদাহরণ আউটপুট:


1
আমি বরং হতবাক হয়েছি এটি আমার নিজের অবধি কোনও উপকার অর্জন করতে পারেনি। এটি একটি দুর্দান্ত সমাধান।
জেসন

3

@ কোলম্যানের উত্তর ব্যবহার করে এখানে একটি বর্ধিতকরণ পদ্ধতি রয়েছে। গেটলফ্ট পার্টের চেয়ে পাথ () ব্যবহার করা মনে রাখা সহজভাবে সহজ। কমপক্ষে তারা সি # তে এক্সটেনশান বৈশিষ্ট্য যুক্ত না করা পর্যন্ত আপনি গেটপথের পাথের নাম পরিবর্তন করতে পারেন।

ব্যবহার:

Uri uri = new Uri("http://www.somewhere.com?param1=foo&param2=bar");
string path = uri.Path();

শ্রেণী:

using System;

namespace YourProject.Extensions
{
    public static class UriExtensions
    {
        public static string Path(this Uri uri)
        {
            if (uri == null)
            {
                throw new ArgumentNullException("uri");
            }
            return uri.GetLeftPart(UriPartial.Path);
        }
    }
}



0

সিলভারলাইটের জন্য সমাধান:

string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);

0

আমি একটি সাধারণ এক্সটেনশান তৈরি করেছি, যেমন অন্যান্য উত্তরগুলির মধ্যে কয়েকটি QueryStringদিয়ে শুরু করার মতো কিছু না থাকলে নাল ব্যতিক্রম ছুঁড়ে ফেলেছিল :

public static string TrimQueryString(this string source)
{ 
    if (string.IsNullOrEmpty(source))
            return source;

    var hasQueryString = source.IndexOf('?') != -1;

    if (!hasQueryString)
        return source;

    var result = source.Substring(0, source.IndexOf('?'));

    return result;
}

ব্যবহার:

var url = Request.Url?.AbsoluteUri.TrimQueryString() 

0

System.Uri.GetComponents, সুনির্দিষ্ট উপাদান আপনি চান।

Uri uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
uri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped);

আউটপুট:

http://www.example.com/mypage.aspx

-1

সাধারণ উদাহরণটি সাবস্ট্রিংয়ের মতো ব্যবহার করা হবে:

string your_url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path_you_want = your_url .Substring(0, your_url .IndexOf("?"));



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.