【问题标题】:How do I trim leading and trailing whitespace from input fields in web2py?如何从 web2py 中的输入字段中修剪前导和尾随空格?
【发布时间】:2014-02-04 10:15:03
【问题描述】:

正如标题所说,如何从 web2py 的输入字段中修剪前导和尾随空格?我已经尝试了 CLEANUP() 验证器,它可以工作,但不幸的是它会删除我不想删除的其他特殊字符(例如,¥)。

还有什么字符被剥离?我不清楚。

【问题讨论】:

    标签: web2py trim removing-whitespace


    【解决方案1】:

    CLEANUP 采用regex 参数,默认为'[^\x09\x0a\x0d\x20-\x7e]'。它首先去除前导和尾随空格,然后删除与正则表达式匹配的任何字符。由于您只需要删除空格,因此您可以提供一个空的正则表达式:

    Field('myfield', requires=CLEANUP(''))
    

    您也可以使用自定义验证器实现同样的效果:

    Field('myfield', requires=lambda v: (str(v).strip(), None))
    

    【讨论】:

    • 有趣的是我不知道验证器的 lambda 形式。这有记录吗?还有f 参数代表什么?
    • 验证器只是一个可调用对象,它接受一个字段对象和一个值并返回一个元组,第一项是值(可能已转换),第二项是错误消息或None .您可以使用带有__call__ 方法的类(这是所有内置验证器的工作方式)或仅使用函数或 lambda 来制作自定义验证器。传入字段对象的原因是验证器可以使用任何相关的字段属性。
    • 书中自定义验证器的例子好像没有取字段对象web2py.com/book/default/chapter/07#Custom-validators是不是有错误?
    • 我的错误。相应地编辑了答案。
    • 我最终创建了一个自定义验证器,因为它可以更好地传达意图并且我确切地知道它在做什么。此外,我认为 CLEANUP 会去除可能不适合多语言网站的非拉丁字符。
    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多