স্ট্রিংয়ে নির্দিষ্ট অক্ষরের পরে অক্ষরগুলি সরান, তারপরে সাবস্ট্রিং সরাবেন?


140

আমি যখন এই ধরনের সরল মনে হয় এবং স্ট্রিং / চরিত্র / রেজেক্সে প্রচুর প্রশ্ন আসে তখন আমি এটিকে পোস্ট করার এক ধরণের অনুভব করি তবে আমার কী প্রয়োজন তা সঠিকভাবে খুঁজে পেলাম না (অন্য কোনও ভাষা বাদে: নির্দিষ্ট পয়েন্টের পরে সমস্ত পাঠ্য সরান )।

আমি নিম্নলিখিত কোড পেয়েছি:

[Test]
    public void stringManipulation()
    {
        String filename = "testpage.aspx";
        String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue";
        String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", "");
        String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length - filename.Length);

        String expected = "http://localhost:2000/somefolder/myrep/";
        String actual = urlWithoutPageName;
        Assert.AreEqual(expected, actual);
    }

আমি উপরের প্রশ্নের সমাধানটি চেষ্টা করেছি (আশা করি সিনট্যাক্সটি একই রকম হবে!) তবে না। আমি প্রথমে ক্যোরিস্ট্রিংটি মুছে ফেলতে চাই যা কোনও পরিবর্তনশীল দৈর্ঘ্য হতে পারে, তারপরে পৃষ্ঠার নামটি সরিয়ে ফেলুন, যা আবার কোনও দৈর্ঘ্যের হতে পারে।

এই পরীক্ষাটি পাস হওয়ার মতো আমি কীভাবে পুরো ইউআরএল থেকে ক্যোরিয় স্ট্রিং সরিয়ে ফেলতে পারি?

উত্তর:


265

স্ট্রিং ম্যানিপুলেশনের জন্য, আপনি যদি সব পরে হত্যা করতে চান ?, আপনি এটি করতে পারেন

string input = "http://www.somesite.com/somepage.aspx?whatever";
int index = input.IndexOf("?");
if (index > 0)
   input = input.Substring(0, index);

সম্পাদনা: সর্বশেষ স্ল্যাশের পরে যদি সবকিছু হয় তবে এর মতো কিছু করুন

string input = "http://www.somesite.com/somepage.aspx?whatever";
int index = input.LastIndexOf("/");
if (index > 0)
    input = input.Substring(0, index); // or index + 1 to keep slash

পর্যায়ক্রমে, যেহেতু আপনি কোনও ইউআরএল নিয়ে কাজ করছেন তাই আপনি এই কোডটির মতো কিছু করতে পারেন

System.Uri uri = new Uri("http://www.somesite.com/what/test.aspx?hello=1");
string fixedUri = uri.AbsoluteUri.Replace(uri.Query, string.Empty);

1
নাকি শেষ হবে /?
চার্লি সল্টস

4
ওহ, হ্যাঁ, আবার পড়ুন। সে ক্ষেত্রে লাস্ট ইনডেক্সঅফ ("/") করতে পারে।
অ্যান্টনি পেগ্রাম

1
এটি করার জন্য দুটি উপায় সরবরাহ করার জন্য ধন্যবাদ x2!
সেন্টরিম্যাং

1
@gsvirdi, সেক্ষেত্রে আপনি সেই URL টি লোড করতে পারেন Uri uriএবং তারপরে অ্যাক্সেস করতে পারেন uri.Segments। এটি একটি অ্যারে ফিরিয়ে দেবে এবং "somepage.aspx" শেষ আইটেম হবে।
অ্যান্টনি পেগ্রাম

1
আমি বাছাই করা পছন্দ করি না, তবে এটি সূচক> = 0 হওয়া উচিত নয়?
জেনি ও'রিলি

103

প্রথমটির আগে সবকিছু সরিয়ে ফেলতে /

input = input.Substring(input.IndexOf("/"));

প্রথমটির পরে সবকিছু সরিয়ে ফেলতে /

input = input.Substring(0, input.IndexOf("/") + 1);

শেষের আগে সবকিছু মুছে ফেলার জন্য /

input = input.Substring(input.LastIndexOf("/"));

শেষের পরে সবকিছু মুছে ফেলার জন্য /

input = input.Substring(0, input.LastIndexOf("/") + 1);

একটি নির্দিষ্ট চরের পরে অক্ষর অপসারণের জন্য আরও সহজ সমাধান হ'ল স্ট্রিং R সরান () পদ্ধতিটি নিম্নরূপ:

প্রথমটির পরে সবকিছু সরিয়ে ফেলতে /

input = input.Remove(input.IndexOf("/") + 1);

শেষের পরে সবকিছু মুছে ফেলার জন্য /

input = input.Remove(input.LastIndexOf("/") + 1);

7
সচেতন হন যে স্ট্রিংটিতে মোটেও "/" থাকে না তবে এগুলি সমস্ত উদাহরণ ফেলে দেবে। সম্ভবত আপনি যদি আসল প্রশ্নের মতো হার্ড-কোডেড স্ট্রিং নিয়ে কাজ করছেন তবে এটি কোনও সমস্যা হবে না তবে বেশিরভাগ ক্ষেত্রেই আপনি এটিকে বিবেচনায় নিতে চাইবেন।
এলেজার

7

এখানে আরও একটি সহজ সমাধান। নিম্নলিখিত কোডগুলি '|' এর আগে সমস্ত কিছু ফিরিয়ে দেবে অক্ষর:

if (path.Contains('|'))
   path = path.Split('|')[0];

প্রকৃতপক্ষে, আপনি যতটা চান বিচ্ছেদী রাখতে পারেন তবে ধরে নিচ্ছেন যে আপনার কেবল একটি পৃথকীকরণের অক্ষর রয়েছে, এখানে '|' এর পরে আপনি কীভাবে সবকিছু পাবেন:

if (path.Contains('|'))
   path = path.Split('|')[1];

(কোডের দ্বিতীয় অংশে আমি যে সমস্ত পরিবর্তন করেছি তা হ'ল অ্যারের সূচক))



1

নির্দিষ্ট চরের আগে সমস্ত কিছু সরাতে নীচে ব্যবহার করুন।

string1 = string1.Substring(string1.IndexOf('$') + 1);

এটি যা করে তা হ'ল $ চরের আগে সবকিছু নিয়ে যায় এবং এটি সরিয়ে দেয়। এখন আপনি যদি কোনও চরিত্রের পরে আইটেমগুলি সরাতে চান, কেবলমাত্র +1 -1-এ পরিবর্তন করুন এবং আপনি সেট হয়ে গেছেন!

তবে একটি ইউআরএল-এর জন্য, আমি এটির জন্য অন্তর্নির্মিত। নেট ক্লাসটি ব্যবহার করব।


1

Request.QueryStringআপনাকে এর parametersমধ্যে অন্তর্ভুক্ত মান এবং মান পেতে সহায়তা করেURL

উদাহরণ

string http = "http://dave.com/customers.aspx?customername=dave"
string customername = Request.QueryString["customername"].ToString();

সুতরাং গ্রাহকের নাম পরিবর্তনশীলটি ডেভের সমান হওয়া উচিত

শুভেচ্ছা


0

আমি দ্বিতীয় হাইটেক্রাইডার: ইতিমধ্যে আপনার জন্য তৈরি একটি বিশেষায়িত url শ্রেণি রয়েছে।

আমার অবশ্যই উল্লেখ করতে হবে, পিএইচপি-র প্রতিস্থাপন সমস্ত অনুসন্ধানের প্যাটার্নের জন্য নিয়মিত এক্সপ্রেশন ব্যবহার করে যা আপনি .NET তেও করতে পারেন - RegEx ক্লাসটি দেখুন।


0

আপনি মুছে ফেলার জন্য .NET এর অন্তর্নির্মিত পদ্ধতিটি ব্যবহার করতে পারেন QueryString। অর্থাত,Request.QueryString.Remove["whatever"];

এখানে [[] তে যা কিছু আছে তার নাম querystringযা আপনি সরাতে চান।

এটি চেষ্টা করুন ... আমি আশা করি এটি সাহায্য করবে।

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