2011-12-03 12 views
11

मुझे यह पता लगाने का प्रयास करने में कोई समस्या है। मैं, कुछ लिंक "ठीक" करने की जरूरत है यहाँ एक उदाहरण है:स्ट्रिंग से पाठ हटाएं जब तक कि यह किसी विशेष वर्ण तक पहुंच न जाए

  1. www.site.com/link/index.php?REMOVETHISHERE
  2. www.site.com/index.php?REMOVETHISHERE

तो मूल रूप से मैं इसे तब तक सब कुछ हटाना चाहता हूं जब तक यह पहुंच न जाए? चरित्र। आपकी सहायता के लिए धन्यवाद.

+0

आप केवल एक बात की गारंटी कर सकते हैं '?' आपकी स्ट्रिंग में? –

+0

हाँ। परापुरा पहले से ही पोस्ट किया गया था जो मैं चाहता था, धन्यवाद। –

+0

@DanielMallott: यदि यह एक मान्य यूआरएल है, तो * * केवल * 'है ...' – Fischermaen

उत्तर

18
string s = @"www.site.com/link/index.php?REMOVETHISHERE"; 
s = s.Remove(s.LastIndexOf('?')); 
//Now s will be simply "www.site.com/link/index.php" 

यह

+1

धन्यवाद, बिल्कुल वही जो मैं चाहता था। मैं एक ऐसा बेवकूफ हूँ। मैं इसे 9 मिनट में स्वीकार करूंगा। –

+0

नाइटपिकिंग, लेकिन 'इंडेक्सऑफ' शायद 'LastIndexOf' – minnow

+0

@ मिन्नो क्यों हो सकता है ??? यदि स्ट्रिंग में एक से अधिक '?' ओपी शायद आखिरी एक –

2

उपयोग string.split करना चाहिए।

string URL = "www.site.com/link/index.php?REMOVETHISHERE" 
var parts = URL.Split('?'); 

फिर parts[0] "www.site.com/link/index.php" में शामिल होंगे और parts[1] "REMOVETHISHERE" शामिल होंगे। फिर आप जो भी हिस्सा चाहते हैं उसका उपयोग कर सकते हैं।

आपको यह सुनिश्चित करने के लिए चेक जोड़ना चाहिए कि सरणी के दूसरे तत्व तक पहुंचने से पहले दो भाग हैं। आप (उदाहरण के लिए) जांच सकते हैं कि स्ट्रिंग में "?" है Split पर कॉल करने का प्रयास करने से पहले।

3

हालांकि एक उचित ढंग से तैयार स्ट्रिंग ऑपरेशन काम करेगा, आंशिक यूआरआई जानकारी निकालने का अधिक सामान्य तरीका System.Uri प्रकार का उपयोग करना है जिसमें इन परिचालनों को समाहित करने के तरीके हैं, उदा।

var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE"); 
var part = uri.GetLeftPart(UriPartial.Path); 

यह और अधिक स्पष्ट रूप से अपने कोड की मंशा व्यक्त जाएगा और आप फिर से उपयोग करने वाले मौजूदा कार्यान्वयन जो काम करने के लिए जाना जाता है हो जाएगा।

System.Uri कन्स्ट्रक्टर एक अपवाद फेंक देगा यदि स्ट्रिंग वैध यूआरआई का प्रतिनिधित्व नहीं करती है, लेकिन यदि आप एक अवैध यूआरआई का सामना कर रहे हैं तो आप शायद अपने प्रोग्राम में कुछ अन्य व्यवहार का आह्वान करना चाहेंगे। एक अवैध यूआरआई का पता लगाने के लिए आप या तो अपवाद पकड़ सकते हैं या TryCreate() ओवरलोड का उपयोग कर सकते हैं।

0

अंतिम "?" को हटाने के लिए और सब कुछ के बाद यह:

string input = @"www.site.com/link/index.php?REMOVETHISHERE"; 
    input = input.Remove(input.LastIndexOf('?')); 

    OR 

    string input = @"www.site.com/link/index.php?REMOVETHISHERE"; 
    input = input.Substring(0, input.LastIndexOf('?')); 

अब उत्पादन होगा:

www.site.com/link/index.php 
संबंधित मुद्दे