2009-02-01 10 views
38

के भीतर विशिष्ट सबस्ट्रिंग शामिल है या नहीं, मैं यह जांचना चाहता हूं कि पहले 0 वर्णों में Value1 में "abc" है या नहीं। आप इसे if कथन के साथ कैसे देखेंगे?यह निर्धारित करने के लिए कि स्ट्रिंग में पहले एक्स वर्ण

var Value1 = "ddabcgghh"; 

if (Value1.Contains("abc")) 
{ 
    found = true; 
} 

यह पहले 3, 4 या 5 वर्णों के भीतर हो सकता है।

+0

क्षमा करें दोस्तों, जब मैंने पहली बार पोस्ट किया था तब मैं स्पष्ट नहीं था, मूल्य एबीसी (यह परिवर्तन) शायद वर्णों की पहली एक्स संख्या के भीतर हो सकता है। जैसे 3,4,5 आदि तो स्टार्ट्स मेरे साथ काम नहीं करेगा। –

उत्तर

7
if (Value1.StartsWith("abc")) { found = true; } 
+0

मुझे नहीं लगता कि आवश्यकताओं को पूरा करता है। – Will

+0

क्या यह वही नहीं है = Value1.StartsWith ("abc")? –

+1

@Will - true लेकिन सभी सॉफ़्टवेयर प्रोजेक्ट्स के रूप में आवश्यकताएं बदल दी गई हैं क्योंकि मुझे इसमें जाना था। @ जिम - सच है लेकिन मैंने प्रश्न के लेखक की शैली को रखा है। – olle

3

आप निकट पहुंच गए हैं ... लेकिन उपयोग: if (Value1.StartsWith("abc"))

3

यह तुम क्या जरूरत है:

if (Value1.StartsWith("abc")) 
{ 
found = true; 
} 
41

या आप पाया का मूल्य निर्धारित करने की आवश्यकता है, तो:

found = Value1.StartsWith("abc") 

संपादित करें: अपना संपादन देखते हुए, मैं कुछ ऐसा करूंगा:

found = Value1.Substring(0, 5).Contains("abc") 
+0

यह देखने के लिए कि कोई वैल्यू 1 स्ट्रिंग की लंबाई 5 है, यह देखने के लिए एक चेक भी जोड़ें। –

10

छोटा संस्करण:

found = Value1.StartsWith("abc"); 

खेद है, लेकिन मैं 'कम' कोड के लिए हामी हूँ।


को देखते हुए प्रश्नकर्ता के संपादित मैं वास्तव में कुछ है कि एक ऑफसेट स्वीकार साथ जाना होगा, यह वास्तव में एक एक्सटेंशन विधि है कि StartsWith

public static class StackOverflowExtensions 
{ 
    public static bool StartsWith(this String val, string findString, int count) 
    { 
     return val.Substring(0, count).Contains(findString); 
    } 
} 
+0

मुझे लगता है कि वह "1abcwhatever" और "xyabcwhatever भी" से मेल खाना चाहता था। – Will

+0

उन्होंने बदल दिया कि हम में से अधिकांश ने – keithwarren7

3

एक और अधिक स्पष्ट संस्करण overloads करने के लिए एक महान जगह हो सकती है

found = Value1.StartsWith("abc", StringComparison.Ordinal); 

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

5

इंडेक्सऑफ का उपयोग करना आसान और उच्च प्रदर्शन है।

int index = Value1.IndexOf("abc"); 
bool found = index >= 0 && index < x; 
+0

उत्तर दिया था, लेकिन कम कुशल अगर _Value1_ एक लंबी स्ट्रिंग है और _x_ छोटा है। –

3

तुम भी नियमित अभिव्यक्ति (कम पठनीय हालांकि)

string regex = "^.{0,7}abc"; 

System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(regex); 
string Value1 = "sssddabcgghh"; 

Console.WriteLine(reg.Match(Value1).Success); 
+1

यह काम करता है लेकिन नियमित अभिव्यक्ति अक्षम है। यह पहले 7 अक्षरों को पकड़ लेगा और फिर "एबीसी" के लिए परीक्षण करेगा। यदि वह परीक्षण विफल रहता है तो यह एक चरित्र का बैक अप लेगा और पुनः प्रयास करेगा। यह प्रक्रिया तब तक जारी रहेगी जब तक कोई मिलान नहीं मिलता है या स्ट्रिंग की शुरुआत तक पहुंच जाती है। गैर लालची समकक्ष _ "^। {0,7}? Abc" _ है। –

16

उपयोग कर सकते हैं मैं indexOf विधि

bool found = Value1.IndexOf("abc", 0, 7) != -1; 
1

जवाब से पर जोड़ा जा रहा है की भार के की में से एक का प्रयोग करेंगे नीचे मैंने इस विधि को बनाया है:

public static bool ContainsInvalidStrings(IList<string> invalidStrings,string stringToCheck) 
    { 

     foreach (string invalidString in invalidStrings) 
     { 
      var index = stringToCheck.IndexOf(invalidString, StringComparison.InvariantCultureIgnoreCase); 
      if (index != -1) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

इसका उपयोग इस प्रकार किया जा सकता है:

  var unsupportedTypes = new List<string>() 
     { 
      "POINT Empty", 
      "MULTIPOINT", 
      "MULTILINESTRING", 
      "MULTIPOLYGON", 
      "GEOMETRYCOLLECTION", 
      "CIRCULARSTRING", 
      "COMPOUNDCURVE", 
      "CURVEPOLYGON", 
      "MULTICURVE", 
      "TRIANGLE", 
      "TIN", 
      "POLYHEDRALSURFACE" 
     }; 


      bool hasInvalidValues = ContainsInvalidStrings(unsupportedTypes,possibleWKT); 

आप इस तरह से कई अमान्य मानों की जांच कर सकते हैं।

संबंधित मुद्दे