2011-11-02 12 views
7

Nella documentazione Apple per NSString esiste un metodo stringByReplacingCharactersInRange, tuttavia non riesco a trovare questo metodo in Monotouch.Esiste un metodo "stringByReplacingCharactersInRange" di NSString in Monotouch?

Manca questa implementazione del metodo dall'associazione API nativa Monotouch?

ho bisogno di questo metodo per implementare una logica movimentazione stringa personalizzata all'interno shouldChangeCharactersInRange

+0

Si sta utilizzando un NSString o di una stringa in MonoTouch? –

+0

Ho provato entrambi, nessuno ha un tale metodo. –

+0

non sai cosa sia 'shouldChangeCharactersInRange'? errore di battitura? – poupou

risposta

8

Ecco un po 'di codice per fare quello che ti serve:

string text = field.Text; 
string result; 

result = text.Substring (0, range.Location) + replacement + text.Substring (range.Location + range.Length); 
+0

Perché il downvote? :-( – jstedfast

+0

grazie jstedfast, il tuo codice fa quello che stavo cercando –

4

Non tutto è rilegato per NSString perché sarebbe in gran parte duplicare i metodi .NET disponibili in System.String.

Il modo più semplice è di lavorare su .NET (nativo) stringa e creare uno NSString da loro se/quando è necessario interoperare con API che lo richiede. Questo ha il vantaggio di ridurre al minimo il numero di transizioni gestite/non gestite (c'è un piccolo costo per questo).

string s = "..."; 
var ns = new NSString (s); 

Lo stesso vale se si riceve una NSString dalla API, convertirlo in una stringa poi manipolarlo.

NSString ns = NSSomething.GetIt(); 
string s = ns.ToString(); 

Se si trova un legame specifico che non ha un metodo .NET simile, allora si prega di compilare un bug report su http://bugzilla.xamarin.com e faremo in modo di includere nelle future versioni di MonoTouch. Spesso una soluzione immediata può essere data per sbloccarti.

+2

Grazie poupou. Non riesco a trovare un metodo .NET Framework equilibrato a stringByReplacingCharactersInRange. Compilerò un bug report –