/ / मैं स्ट्रिंग्स को दो सरणी में विभाजित करना चाहता हूं - सी #

मैं स्ट्रिंग को दो सरणी में विभाजित करना चाहता हूं - सी #

मेरे पास एक स्ट्रिंग डेटा है जैसे "aaa.bbb.ccc" या "aaa.bbb.ccc.ddd"। अगर मैं इस तरह विभाजित हो गया "aaa.bbb.ccc".split("."), यह हो जाता है "aaa", "bbb" तथा "ccc"। मैं इसे सिर्फ दो तारों की तरह विभाजित करना चाहता हूं "aaa", "bbb.ccc"। मुझे लगता है कि मैं सबसे पहले सब कुछ विभाजित करके और इसे फिर से जोड़कर कर सकता हूं, लेकिन यह स्मार्ट तरीका नहीं है। क्या इसे और अधिक आसानी से सेट करने का कोई तरीका है?

उत्तर:

उत्तर № 1 के लिए 4

आप विभाजित भागों की संख्या निर्धारित कर सकते हैं:

string myString = "aaa.bbb.ccc";
int parts = 2;
string[] myParts = myString.Split(new string[] {"."}, parts, StringSplitOptions.None);

जवाब के लिए 3 № 2

यदि आप पहले डॉट चरित्र पर विभाजित करना चाहते हैं, तो उपयोग करें Substring:

String value = "aaa.bbb.ccc";
Int32 firstDotIdx = value.IndexOf( "." );
if( firstDotIdx > -1 ) {
return new String[] {
value.Substring( 0, firstDotIdx ),
value.Substring( firstDotIdx + 1 );
}
} else {
return new String[] {
value,
"";
}
}
  • यदि आपके पास है "aaa.bbb“फिर लौट आएगा { "aaa", "bbb" }.
  • यदि आपके पास है "aaa.bbb.ccc“फिर लौट आएगा { "aaa", "bbb.ccc" }.
  • यदि आपके पास है ".aaa.bbb“फिर लौट आएगा { "", "aaa.bbb" }.
  • यदि आपके पास है "aaa“फिर लौट आएगा { "aaa", "" }.

जवाब के लिए 0 № 3

मेरे पास इस तरह के स्ट्रिंग जोड़तोड़ के लिए विस्तार विधियों का एक गुच्छा है। आपके कार्य के लिए एक उदाहरण उपयोग इस तरह दिखेगा।

var str = "aaa.bbb.ccc.ddd";
var result = new[] { str.TakeUntil("."), str.TakeFrom(".") };

और एक्सटेंशन पैक इस तरह दिखता है। फ़ंक्शन के परिणामों में खोज स्ट्रिंग स्वयं शामिल नहीं होगी, और यदि खोज स्ट्रिंग इनपुट में मौजूद नहीं है, तो वे पूरे इनपुट को परिणाम के रूप में वापस कर देंगे (यह एक सम्मेलन है जो इस किनारे के मामले के लिए मेरी जरूरतों को सूट करता है, बदला जा सकता है) ।

public static string TakeUntil(this string s, string search)
{
if (string.IsNullOrEmpty(s)) return s;
var pos = s.IndexOf(search, StringComparison.OrdinalIgnoreCase);
if (pos >= 0)
return s.Substring(0, pos);
return s;
}
public static string TakeUntilLast(this string s, string search)
{
if (string.IsNullOrEmpty(s)) return s;
var pos = s.LastIndexOf(search, StringComparison.OrdinalIgnoreCase);
if (pos >= 0)
return s.Substring(0, pos);
return s;
}

public static string TakeFrom(this string s, string search)
{
if (string.IsNullOrEmpty(s)) return s;
var pos = s.IndexOf(search, StringComparison.OrdinalIgnoreCase);
if (pos >= 0)
return s.Substring(pos + search.Length);
return s;
}
public static string TakeFromLast(this string s, string search)
{
if (string.IsNullOrEmpty(s)) return s;
var pos = s.LastIndexOf(search, StringComparison.OrdinalIgnoreCase);
if (pos >= 0)
return s.Substring(pos + search.Length);
return s;
}