我的项目中有一个EditText字段,代表该人的全名。所以我只想在其中允许使用字母和空格。所以我在XML
文件中尝试了以下内容
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
但它不起作用。任何人都可以告诉我该怎么做?
答案 0 :(得分:18)
试试这个:
EditText yourEditText = (EditText) findViewById(R.id.yourEditText);
yourEditText.setFilters(new InputFilter[] {
new InputFilter() {
@Override
public CharSequence filter(CharSequence cs, int start,
int end, Spanned spanned, int dStart, int dEnd) {
// TODO Auto-generated method stub
if(cs.equals("")){ // for backspace
return cs;
}
if(cs.toString().matches("[a-zA-Z ]+")){
return cs;
}
return "";
}
}
});
答案 1 :(得分:9)
以下更改对我有用: -
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$product_name = $_POST['p_name'];
$product_description = $_POST['p_description'];
$category_ = $_POST['category-selected'];
$price = $_POST['p_price'];
$front = $_POST['front-image'];
$back = $_POST['back-image'];
$name_err = "";
if(empty($name_err))
{
$sql = "INSERT INTO product (categoryID, product_name, product_description, price, picture_front, picture_back) VALUES (?, ?, ?, ?, ?, ?)";
if ($stmt = $mysqli->prepare($sql))
{
$stmt->bind_param("issdbb", $pmt_category, $pmt_name, $pmt_description, $pmt_price, $pmt_imagef, $pmt_imageb);
$pmt_category = $category;
$pmt_name = $product_name;
$pmt_description = $product_description;
$pmt_price = $price;
$pmt_imagef = $front;
$pmt_imageb = $back;
if ($stmt->execute())
{
echo "<script>alert('INSERTED SUCCESSFULLY');</script>";
exit();
}
else
{
echo "<script>alert('FAILED TO INSERT');</script>";
}
}
$stmt->close();
}
$mysqli->close();
}
在字符串之间放置空格。如果你在一个字符串的末尾放置空格,它将被自动修剪掉。
我在小写字母结尾后以大写字母开头使用了空格。
答案 2 :(得分:4)
试试这个
android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
在字符串之间放置空格。如果你在一个字符串的末尾放置空格,它将被自动修剪掉。
我在小写字母结尾和大写字母开头后使用了空格
答案 3 :(得分:3)
在EditText标记中添加此行。
机器人:位数=&#34; abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#34;
您的EditText标记应如下所示:
<EditText
android:id="@+id/edt"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
它完美无缺,无需验证条件
正则表达式
src.toString().matches("[a-zA-Z ]+")
如果情况确实如此,则只需在两者之间添加空间即可。
android:digits =&#34; abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ&#34;
答案 4 :(得分:2)
出于某种原因,包括&#34; \ n&#34;不能发生在字符串的末尾,我搜索了谷歌文档,大多数没有发现。实现空格和换行的唯一方法是在字符串的中间。请参阅我在其中一个应用中使用的示例。
android:digits="aãâáàbcçdeéfghiíjklmnoõôóòpqrstuvwxyzAÃÂÁÀBCÇDEÉFGHIÍJKLMNOÕÔÓÒPQRSTUVWXYZ1234567890@-_'+=(){}[]*%$#!?,.;\n: /?\\"
答案 5 :(得分:1)
在layout.xml
。
<EditText android:inputType="textPersonName" />
答案 6 :(得分:1)
请在下面的字符串之间放置空格,它是工作代码。
android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ "
答案 7 :(得分:0)
使用正则表达式.. 模式应该是
Full_Name_Pattern = "[A-Z][a-z]+( [A-Z][a-z]+)*";
答案 8 :(得分:0)
这对我有用(中间的空白,而不是最后) android:digits =&#34; abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ&#34;
答案 9 :(得分:0)
尝试此解决方案,它会阻止输入数字,空格以外的特殊字符。
editText.setFilters(new InputFilter[] {
new InputFilter() {
@Override
public CharSequence filter(CharSequence cs, int start,
int end, Spanned spanned, int dStart, int dEnd) {
return cs.toString().replaceAll("[^a-zA-Z ]*","");
}
}
});
科林版:
editText.filters = arrayOf(
InputFilter { source, start, end, dest, dstart, dend ->
return@InputFilter source.replace(Regex("[^a-zA-Z ]*"), "")
}
)