2017-02-03 62 views
0

我不希望允許在顯示名稱字段中輸入空格。如何禁用ios中的文本字段中的空格字符xamarin

例如,如果用戶輸入名稱如「Name」或「Name」或「Name」,則最終結果應該是「Name」,從而消除空格。

我試過這種方法,但修剪似乎不工作。

NameText.EditingDidEnd += delegate { 
      char[] arr = new char[] {' '}; 
      NameText.Text.TrimStart(arr); 
      ScrollPageForKeyboard(false); 
     }; 
+0

定義爲什麼不只是做一個'.Trim()'後的事實' DisplayNameText.Text'值,假設它是一個字符串?這將從字符串中取出所有前導和尾隨空白。 – awh112

+0

'String.Trim()'將從一個字符串的開始和結尾修剪所有空格。你的'DisplayNameText.Text.TrimStart(arr);'返回你需要存儲的輸出字符串:'DisplayNameText.Text = DisplayNameText.Text.TrimStart(arr);' –

+0

'Regex.Replace(yourtext,@「\ s '','「);' –

回答

1

我建議防止用戶從實際進入空白與刪除它他們都準備好了。

添加ShouldChangeCharacters處理和檢查,看看他們在空白字符集輸入任何字符由NSCharacterSet.WhitespaceAndNewlines

NameText.ShouldChangeCharacters += (UITextField textField, NSRange range, string replacementString) => 
{ 
    foreach (var aChar in replacementString) 
    { 
     if (NSCharacterSet.WhitespaceAndNewlines.Contains(aChar)) 
      return false; 
    } 
    return true; 
}; 
1

使用String.Trim()方法應該很好地在這裏工作:

NameText.EditingDidEnd += delegate 
{ 
    var trimmedName = DisplayNameText.Text.Trim(); 
    ScrollPageForKeyboard(false); 
}; 

你也可以使用一個Regex來完全替代所有的空白:

NameText.EditingDidEnd += delegate 
{ 
    var trimmedName = Regex.Replace(DisplayNameText.Text, @"\s+", ""); 
    ScrollPageForKeyboard(false); 
}; 
+0

你不需要'char [] arr'這裏 –

+0

你說得對@ @ @ @ aas_JC,我解決了它。謝謝! – awh112

+0

我會推薦使用'ShouldChangeCharacters'來防止空白,而不是允許輸入空白字符然後刪除它們。你也應該使用'NSCharacterSet.WhitespaceAndNewlines'來確定用戶是否實際上輸入了空白字符而不是硬編碼基於英文的文字。 – SushiHangover

2

如果你只是想刪除前導和尾部空格(「名稱」或「名稱」),則使用:

DisplayNameText.Text = DisplayNameText.Text.Trim() 

按照評論中的建議。如果要刪除所有空格(「John Smith」=「JohnSmith」),則使用

DisplayNameText.Text = DisplayNameText.Text.Replace(" ", "") 

刪除所有空格。

+0

我建議使用'ShouldChangeCharacters'來防止空白,而不是允許輸入空白字符,然後刪除它們。你也應該使用'NSCharacterSet.WhitespaceAndNewlines'來確定用戶是否實際輸入空白字符而不是硬編碼基於英文的文字 – SushiHangover

相關問題