【问题标题】:How to disable space character in a text field in ios xamarin如何在 ios xamarin 的文本字段中禁用空格字符
【发布时间】:2023-03-18 10:15:02
【问题描述】:

我不想允许在显示名称字段中输入空格。

例如,如果用户键入这样的名称“名称”或“名称”或“名称”,最终结果应该是“名称”消除空格。

我尝试了这种方法,但修剪似乎不起作用。

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

【问题讨论】:

  • 为什么不在DisplayNameText.Text 值上做一个.Trim(),假设它是一个字符串?这将从字符串中删除所有前导和尾随空格。
  • String.Trim() 将修剪字符串开头和结尾的所有空格。您的 DisplayNameText.Text.TrimStart(arr); 正在返回您需要存储的输出字符串:DisplayNameText.Text = DisplayNameText.Text.TrimStart(arr);
  • Regex.Replace(yourtext, @"\s", "");
  • 我不会担心所有额外的东西,只需使用 string.Replace 函数

标签: c# ios xamarin


【解决方案1】:

如果您只想删除前导和尾随空格(“名称”或“名称”),请使用:

DisplayNameText.Text = DisplayNameText.Text.Trim() 

按照 cmets 中的建议。如果要删除所有空格(“John Smith”=“JohnSmith”),请使用

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

删除所有空格。

【讨论】:

  • 我建议首先使用ShouldChangeCharacters 来防止出现空白,而不是允许输入空白字符然后删除它们。此外,您应该使用NSCharacterSet.WhitespaceAndNewlines 来确定用户是否实际上输入了空格字符而不是硬编码基于英语的文字
【解决方案2】:

我建议防止用户实际输入空格,而不是他们都准备好之后删除它。

添加一个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;
};

【讨论】:

    【解决方案3】:

    在这里使用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);
    };
    

    【讨论】:

    • 这里不需要char[] arr
    • 我建议首先使用ShouldChangeCharacters 来防止出现空白,而不是允许输入空白字符然后删除它们。此外,您应该使用NSCharacterSet.WhitespaceAndNewlines 来确定用户是否实际输入了空格字符,而不是硬编码基于英语的文字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多