2013-03-07 6 views
7

मैं जानना चाहता हूं कि मैं स्ट्रिंग के किसी चरित्र को "अंतिम संख्या वर्णों को छोड़कर" की स्थिति के साथ कैसे बदल सकता हूं?अंतिम एन वर्णों को छोड़कर स्ट्रिंग के सभी अक्षरों को मास्क करना

उदाहरण:

string = "4111111111111111"; 

और मैं बनाने के लिए यह जरूरी है कि

new_string = "XXXXXXXXXXXXX1111" 

इस उदाहरण मैं चरित्र की जगह में चाहते हैं "एक्स" पिछले 4 वर्ण को छोड़कर के लिए।

मैं इसे कैसे प्राप्त कर सकता हूं?

+1

यू पिछले चार वर्णों हर बार मतलब – tariq

+0

@tariq, अपने तय नहीं। हर बार –

+0

नहीं तो यह निर्धारित करता है कि आप कितने अक्षर – tariq

उत्तर

6

यहां इसके बारे में सोचने का एक तरीका है। n छोड़ने के लिए पिछले संख्या पात्रों कॉल करें:

  1. कितने वर्ण X से बदल दिया जाएगा? स्ट्रिंग शून्य की लंबाई n
  2. हम अन्य पात्रों के साथ वर्णों को कैसे बदल सकते हैं? आप सीधे string संशोधित नहीं कर सकते हैं, लेकिन आप एक नया निर्माण कर सकते हैं।
  3. मूल स्ट्रिंग से अंतिम n वर्ण कैसे प्राप्त करें? ऐसा करने के कुछ तरीके हैं, लेकिन सबसे आसान शायद Substring है, जो हमें प्रारंभिक बिंदु और वैकल्पिक रूप से समापन बिंदु निर्दिष्ट करके एक स्ट्रिंग का हिस्सा पकड़ने की अनुमति देता है।

तो यह कुछ इस तरह दिखाई है (जहां n वर्णों की संख्या मूल से छोड़ने के लिए है, और str मूल स्ट्रिंग है - string अपने वेरिएबल का नाम नहीं किया जा सकता क्योंकि यह एक आरक्षित कीवर्ड है) :

// 2. Start with a blank string 
var new_string = ""; 

// 1. Replace first Length - n characters with X 
for (var i = 0; i < str.Length - n; i++) 
    new_string += "X"; 

// 3. Add in the last n characters from original string. 
new_string += str.Substring(str.Length - n); 
+0

धन्यवाद !, मैं इस –

+0

@ cheol.lui को आजमाउंगा, यह आपके लिए काम कर सकता है, लेकिन एक समय और कचरा संग्रह में चर, लूपिंग और निरंतर स्ट्रिंग + एक चरित्र बनाने के संबंध में ओवरकिल ... हाँ, विवरण काम करता है आपको "मानसिक कैसे हल करें" देने के लिए अच्छा है, लेकिन निश्चित रूप से पोस्ट किए गए अन्य विकल्पों के रूप में उतना कुशल नहीं है। – DRapp

13

क्या यह आपके अनुरूप होगा?

var input = "4111111111111111"; 
var length = input.Length; 
var result = new String('X', length - 4) + input.Substring(length - 4); 

Console.WriteLine(result); 

// Ouput: XXXXXXXXXXXX1111 
+0

धन्यवाद दिखाना चाहते हैं !, मैं इस –

+0

को आजमाउंगा यह समाधान मेरे लिए बहुत अच्छा काम करता था और संक्षेप में था। धन्यवाद! – Lexi847942

2
StringBuilder sb = new StringBuilder(); 
Char[] stringChar = string.toCharArray(); 
for(int x = 0; x < stringChar.length-4; x++){ 
    sb.append(stringChar[x]); 
} 
sb.append(string.substring(string.length()-4)); 

string = sb.toString(); 
9

कैसे कुछ तरह के बारे में ...

new_string = new String('X', YourString.Length - 4) 
        + YourString.Substring(YourString.Length - 4); 

वर्तमान स्ट्रिंग -4 की लंबाई के आधार पर एक नई स्ट्रिंग बनाएं और बस इसे "एक्स" एस करें। फिर मूल स्ट्रिंग

+0

यह मैंने कभी देखा है इसका सबसे सुंदर कार्यान्वयन है। वाहवाही। आपने 1 में मुझे 7 लाइनें लीं। –

1

मैं तुम्हें सूचकांक

string input = "4111111111111111"; 
string new_string = new string(input.Select((c, i) => i < input.Length - 4 ? 'X' : c).ToArray()); 
1

लुई, कृपया इस एक का प्रयास करें साथ Select इस्तेमाल कर सकते हैं लगता है के पिछले 4 पात्रों पर जोड़ने ...

string dispString = DisplayString("4111111111111111", 4); 

एक समारोह बनाएं मूल स्ट्रिंग पास करने और अंकों की संख्या के साथ।

public string DisplayString(string strOriginal,int lastDigit) 
    { 
     string strResult = new String('X', strOriginal.Length - lastDigit) + strOriginal.Substring(strOriginal.Length - lastDigit); 
     return strResult; 
    } 

यदि आपको मदद की हो सकता है ....

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

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