2009-01-14 9 views
6

AS3 में आप इस हस्ताक्षर के साथ एक स्ट्रिंग पर एक समारोह है कॉलबैक समारोह से बदले:सी # तरह AS3

function replace(pattern:*, repl:Object):String 

repl: ऑब्जेक्ट भी एक समारोह निर्दिष्ट कर सकते हैं। यदि आप कोई फ़ंक्शन निर्दिष्ट करते हैं, तो फ़ंक्शन द्वारा लौटाई गई स्ट्रिंग मिलान सामग्री के स्थान पर डाली जाती है।

साथ ही, क्या मूल स्ट्रिंग प्राप्त करना संभव है जिसमें मैं चीजों को प्रतिस्थापित करना चाहता हूं?

(AS3 में आप

var input:String = arguments[2]; //in the callback function 

द्वारा मूल स्ट्रिंग प्राप्त कर सकते हैं)

मैं मूल स्ट्रिंग वाली Match कक्षा में एक संपत्ति नहीं दिख रहा है ...

उत्तर

6

आदेश में सी # में ऐसा करने के लिए, System.Text.RegularExpressions.Regex.Replace() का उपयोग करें जो कॉलबैक लेता है।

12
static void Main() { 

    string s1 = Regex.Replace("abcdefghik", "e", 
     match => "*I'm a callback*"); 

    string s2 = Regex.Replace("abcdefghik", "c", Callback); 
} 
static string Callback(Match match) { 
    return "*and so am i*"; 
} 

नोट आप (जब तक आप regex समूहों (.Groups) आदि के लिए उपयोग करना चाहते हैं, और विशेष रूप से match.Value) तर्क के माध्यम से मिलान किया डेटा की पहुंच है।

+0

क्या मूल स्ट्रिंग प्राप्त करना संभव है जिसमें मैं चीजों को प्रतिस्थापित करना चाहता हूं? (AS3 में आप वर इनपुट द्वारा मूल स्ट्रिंग प्राप्त कर सकते हैं: स्ट्रिंग = तर्क [2]; कॉलबैक फ़ंक्शन में //) मैं मूल स्ट्रिंग वाली मच कक्षा में एक संपत्ति नहीं दिख रहा है ... –

5
बस मौजूदा जवाब बिल्कुल ठोस बनाने के लिए एक उदाहरण के रूप

, और दिखा कैसे लैम्ब्डा भाव सुविधाजनक हो सकता है:

using System; 
using System.Text.RegularExpressions; 

class Test 
{ 
    static void Main() 
    { 
     var template = "On $today$ you need to do something."; 
     var regex = new Regex(@"\$today\$"); 
     var text = regex.Replace(template, 
      match => DateTime.Now.ToString("d")); 
     Console.WriteLine(text); 
    } 
} 

(मार्क के जवाब दिखाई दिया, जबकि मैं इस लिख रहा था, लेकिन मैं के रूप में यह ऊपर छोड़ देंगे एक पूर्ण उदाहरण जब तक कि कोई भी सोचता है कि यह केवल अनावश्यक है। अगर सुझाव दिया गया तो मुझे इसे हटाने में खुशी होगी।)

+0

धन्यवाद जॉन, यह वास्तव में मेरे लिए सहायक था। – mack

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