2012-07-11 4 views
5

मेरे पास इस तरह की एक स्ट्रिंग है;सी # में एक सादे स्ट्रिंग से/हाइफ़न को कैसे सम्मिलित/हटाएं?

string text = "6A7FEBFCCC51268FBFF"; 

और मैं एक तरीका है जिसके के लिए मैं 4 अक्षर को 'पाठ' चर के बाद हाइफन जोड़कर के लिए तर्क सम्मिलित करना चाहते है। तो, आउटपुट इस तरह होना चाहिए;

6A7F-EBFC-CC51-268F-BFF 

उपरोक्त 'टेक्स्ट' परिवर्तनीय तर्क के लिए हाइफ़न जोड़ना इस विधि के अंदर होना चाहिए;

public void GetResultsWithHyphen 
{ 
    // append hyphen after 4 characters logic goes here 
} 

और मैं भी एक दिया स्ट्रिंग जैसे 6A7F-EBFC-CC51-268F-BFF से हाइफन को दूर करना चाहते हैं। तो, एक स्ट्रिंग तर्क से हाइफ़न को हटा देना इस विधि के अंदर होना चाहिए;

public void GetResultsWithOutHyphen 
{ 
    // Removing hyphen after 4 characters logic goes here 
} 

मैं कैसे (डेस्कटॉप ऐप्लिकेशन के लिए) सी # में ऐसा कर सकते हैं? ऐसा करने का सबसे अच्छा तरीका क्या है? अग्रिम में सभी के जवाब की सराहना करें।

+0

आपने क्या प्रयास किया है? स्ट्रिंग में देखा गया। प्रवेश या स्ट्रिंग। जगह या स्ट्रिंग। हटाओ? –

+0

क्या आप स्ट्रिंग पैरामीटर में लेने और स्ट्रिंग को वापस करने के लिए प्रत्येक विधि का इरादा नहीं रखते हैं? आपके कोड स्निपेट का सुझाव है कि प्रत्येक विधि को कुछ भी वापस नहीं करना चाहिए। – psych

+0

मुझे नहीं पता कि यह –

उत्तर

7

GetResultsWithOutHyphen आसान है (और एक void

public string GetResultsWithOutHyphen(string input) 
{ 
    // Removing hyphen after 4 characters logic goes here 
    return input.Replace("-", ""); 
} 

के बजाय string लौटना चाहिए GetResultsWithHyphen के लिए, वहाँ यह करने के लिए बरसाती कोट तरीके हो सकते हैं, लेकिन यहां एक ही रास्ता है:

public string GetResultsWithHyphen(string input) 
{ 

    // append hyphen after 4 characters logic goes here 
    string output = ""; 
    int start = 0; 
    while (start < input.Length) 
    { 
     output += input.Substring(start, Math.Min(4,input.Length - start)) + "-"; 
     start += 4; 
    } 
    // remove the trailing dash 
    return output.Trim('-'); 
} 
+0

'in' और' out' दोनों कीवर्ड हैं, आपको अलग-अलग चर नामों की आवश्यकता है :) –

+1

@ बालीसी बकवास! इसके बजाए '@ इन' और' @ आउट' का प्रयोग करें! : पी –

+0

जहां हाइफ़न GetResultsWithHyphen विधि में जोड़ा गया है? –

1
var hyphenText = new string(
    text 
.SelectMany((i, ch) => i%4 == 3 && i != text.Length-1 ? new[]{ch, '-'} : new[]{ch}) 
.ToArray() 

)

4

रेगेक्स का उपयोग करें:

public String GetResultsWithHyphen(String inputString) 
{ 
    return Regex.Replace(inputString, @"(\w{4})(\w{4})(\w{4})(\w{4})(\w{3})", 
             @"$1-$2-$3-$4-$5"); 
} 

और हटाने के लिए:

public String GetResultsWithOutHyphen(String inputString) 
{ 
    return inputString.Replace("-", ""); 
} 
+0

मुझे रेगेक्स का उपयोग पसंद है! मैं जितनी बार चाहूं उनका उपयोग करने के बारे में नहीं सोचता। – gb92

+0

एक टिप्पणी/संपादन से संकेत मिलता है कि लंबाई यादृच्छिक है और 1 9 वर्णों के लिए तय नहीं है, इसलिए मुझे नहीं लगता कि यह रेगेक्स काम करेगा। –

0

को दूर करने के लिए:

String textHyphenRemoved=text.Replace('-',''); should remove all of the hyphens 

StringBuilder strBuilder = new StringBuilder(); 
int startPos = 0; 
for (int i = 0; i < text.Length/4; i++) 
{ 
    startPos = i * 4; 
    strBuilder.Append(text.Substring(startPos,4)); 

    //if it isn't the end of the string add a hyphen 
    if(text.Length-startPos!=4) 
     strBuilder.Append("-"); 
} 
//add what is left 
strBuilder.Append(text.Substring(startPos, 4)); 
string textWithHyphens = strBuilder.ToString(); 

जोड़ने के लिए ध्यान दें कि मेरी जोड़ने कोड अपरीक्षित है।

की तर्ज पर
+0

ठीक से काम नहीं करता है। – aquinas

1
public static string GetResultsWithHyphen(string str) { 
    return Regex.Replace(str, "(.{4})", "$1-"); 
    //if you don't want trailing - 
    //return Regex.Replace(str, "(.{4})(?!$)", "$1-"); 
} 

public static string GetResultsWithOutHyphen(string str) {    
    //if you just want to remove the hyphens: 
    //return input.Replace("-", ""); 
    //if you REALLY want to remove hyphens only if they occur after 4 places: 
    return Regex.Replace(str, "(.{4})-", "$1"); 
} 
+0

ध्यान दें कि यदि स्ट्रिंग लंबाई 4 का एक से अधिक है, तो यह एक पीछे की स्लैश जोड़ देगा। –

+0

अच्छा ... हाँ :)। मैं कल्पना के अनुसार जा रहा हूँ। :) – aquinas

+0

@ChrisSinclair अद्यतन उत्तर – aquinas

1

कुछ:

public string GetResultsWithHyphen(string inText) 
{ 
    var counter = 0; 
    var outString = string.Empty; 
    while (counter < inText.Length) 
    { 
     if (counter % 4 == 0) 
      outString = string.Format("{0}-{1}", outString, inText.Substring(counter, 1)); 
     else 
      outString += inText.Substring(counter, 1); 
     counter++; 
    } 
    return outString; 
} 

यह किसी न किसी तरह कोड है और पूरी तरह से, वाक्य रचना सही

2

यहाँ कम से कम regex मैं के साथ आ सकता है नहीं हो सकता। यह किसी भी लंबाई के तारों पर काम करेगा। ध्यान दें कि \ B टोकन इसे स्ट्रिंग के अंत में मिलान करने से रोक देगा, इसलिए आपको ऊपर दिए गए कुछ उत्तरों के साथ अतिरिक्त हाइफ़न को ट्रिम करने की आवश्यकता नहीं है।

using System; 
using System.Text.RegularExpressions; 
namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string text = "6A7FEBFCCC51268FBFF"; 
      for (int i = 0; i <= text.Length;i++) 
       Console.WriteLine(hyphenate(text.Substring(0, i))); 
     } 

     static string hyphenate(string s) 
     { 
      var re = new Regex(@"(\w{4}\B)"); 
      return re.Replace (s, "$1-"); 
     } 

     static string dehyphenate (string s) 
     { 
      return s.Replace("-", ""); 
     } 
    } 
} 
0

GetResultsWithOutHyphen method

public string GetResultsWithOutHyphen(string input) 
{ 

    return input.Replace("-", ""); 

} 

GetResultsWithOutHyphen method

आप एक चर के बजाय लचीलेपन के लिए चार दे सकते हैं।

public string GetResultsWithHyphen(string input) 
{ 

string output = ""; 
     int start = 0; 
     while (start < input.Length) 
     { 
      char bla = input[start]; 
      output += bla; 
      start += 1; 
      if (start % 4 == 0) 
      { 
       output += "-";  
      } 
     } 
return output; 
} 
0

यह मेरे लिए काम किया जब मैं एक सामाजिक सुरक्षा नंबर (123456789) के लिए एक मूल्य की थी और एक लिस्टबॉक्स में के रूप में (123-45-6789) प्रदर्शित करने के लिए यह आवश्यक।

ListBox1.Items.Add("SS Number : " & vbTab & Format(SSNArray(i), "###-##-####")) 

इस मामले में मेरे पास सोशल सिक्योरिटी नंबर की एक श्रृंखला थी। कोड की यह पंक्ति स्वरूपण को एक हाइफ़न डालने के लिए स्वरूपण को बदलती है।

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