Android中判断输入框是否为空的两种方法

本文介绍了在Android应用中如何判断EditText输入框是否为空的方法,包括使用TextUtils.isEmpty()及字符串比较的方式,并提供了示例代码。

 

在Android里面判断输入框EditText是否为空

 

方法一:通过方法TextUtils.isEmpty(s)进行判断,参数s是获取到输入框的内容

方法二:通过方法str.equals(""),str是获取到的输入框的内容

 

 

通过下面一段代码对这两种方法简单测试一下

 

public class MainActivity extends AppCompatActivity {

    EditText edit;
    Button btn1,btn2;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit = (EditText) findViewById(R.id.edit);

        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);



        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = edit.getText().toString().trim();
                if(TextUtils.isEmpty(s)){
                    Toast.makeText(getApplicationContext(),
                            "方法一:输入框为空",Toast.LENGTH_LONG).show();
                }else{
                    Toast.makeText(getApplicationContext(),
                            "输入框不为空",Toast.LENGTH_LONG).show();
                }
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = edit.getText().toString().trim();
                if(s.equals("")){
                    Toast.makeText(getApplicationContext(),
                            "方法二:输入框为空",Toast.LENGTH_LONG).show();
                }else{
                    Toast.makeText(getApplicationContext(),
                            "输入框不为空",Toast.LENGTH_LONG).show();
                }
            }
        });


    }
}

 

效果图:

 

转载于:https://www.cnblogs.com/lyd447113735/p/8945578.html

<think>我们正在使用UniApp开发应用,需要检测输入框中的内容是否包含破折号(中文破折号“——”或英文破折号“—”)。在JavaScript中,我们可以使用字符串的includes方法或正则表达式来检测。由于UniApp基于Vue.js,我们可以通过绑定输入框的input事件,在事件处理函数中检查输入值。步骤:1.在模板中,给输入框绑定input事件,例如:@input="onInput"2.在methods中定义onInput方法,获取输入框的值(event.detail.value或通过v-model绑定的值)3.在onInput方法中,使用字符串的includes方法或正则表达式判断是否包含破折号。注意:中文破折号有全角和半角之分,常见的是全角破折号“——”(U+2014)或“—”(U+2014,一个字符的破折号),而英文破折号是“-”(hyphen)或“–”(endash)或“—”(emdash)。根据需求,这里主要检测中文破折号,但也要明确用户具体指的是哪种。假设用户需要检测的是中文破折号(通常为“——”或“—”,即U+2014),我们可以这样写:方法一:使用includesletcontainsDash=value.includes('——')||value.includes('—');方法二:使用正则表达式(可以同时匹配多种破折号)letpattern=/[———–-]/;//注意:这里包括中文全角破折号(两个字符的“——”实际上是由两个U+2014组成?但通常输入一个长破折号是一个字符?)实际上,常见的中文破折号输入是一个字符(U+2014)或两个连续的U+2014?需要明确。但是,根据Unicode标准,中文破折号通常是一个字符(U+2014),而两个连续的U+2014有时也会被用来表示破折号。但一般情况下,我们可能只需要检测一个U+2014字符。因此,我们可能需要根据实际需求调整。为了简单,我们可以先检测U+2014字符(即“—”,一个字符的破折号)和两个连续的U+2014(即“——”)。但两个连续的U+2014实际上就是两个独立的U+2014,所以用includes('—')就可以检测到单个的破折号(无论是一个还是两个,因为两个连续的也包含单个)。所以,如果我们只关心是否包含破折号(不管是一个还是两个,只要是破折号字符),那么检测U+2014字符即可。但是,请注意:在输入法中,输入破折号时,通常打出来的是“——”(两个字符长度,但实际上是两个U+2014字符)?还是说是一个长破折号(一个字符)?这取决于输入法。通常,中文输入法下,输入破折号会是一个长横线,即一个字符U+2014。所以,我们主要检测字符“—”(U+2014)。另外,有时用户可能输入的是连字符(hyphen-minus,“-”U+002D)或短横线(endash,“–”U+2013)或长横线(emdash,“—”U+2014),如果需求是检测所有类似横线的符号,那么我们可以一起检测。因此,我们需要明确需求:用户要检测的是中文破折号(U+2014)还是包括其他横线?根据问题描述,是“破折号”,所以我们主要关注中文破折号(U+2014)。但是,为了全面,我们可以考虑常见的横线字符:-hyphen:'-'(U+002D)–endash:'–'(U+2013)—emdash:'—'(U+2014)#这就是中文常用的破折号(一个字符)―horizontalbar:'―'(U+2015)如果需求只是中文破折号,那么我们就检测U+2014。因此,代码可以写成:if(value.includes('—')){//注意这里是U+2014字符//包含破折号}但是,在代码中直接写这个字符可能不够直观,我们可以使用Unicode转义序列:\u2014。所以:if(value.includes('\u2014')){//包含破折号}或者,如果需求是检测多种破折号,我们可以使用正则表达式:letpattern=/[\u2014\u2013\u002D\u2015]/;//包括emdash,endash,hyphen,horizontalbarif(pattern.test(value)){//包含破折号或连字符}根据问题,我们只检测破折号(即emdash,U+2014),所以我们使用第一种。示例代码:在模板中:<inputtype="text"@input="onInput":value="inputValue"/>在Vue实例中:data(){return{inputValue:''}},methods:{onInput(event){//如果是原生输入事件,值在event.detail.value中,但uni-app中通常使用v-model,所以可以直接用this.inputValue//但是,这里我们使用v-model绑定,所以event可能是自定义事件,我们可以直接使用this.inputValue,或者使用event.detail.value(取决于具体组件)//对于uni-app的原生输入框组件,通常事件是@input,事件对象为event.detail.valueletvalue=event.detail.value;//如果使用v-model,则可以直接用this.inputValue,但这里我们同时用v-model绑定,所以也可以不用event//但是,为了避免混淆,我们可以这样处理:如果是通过v-model绑定的,那么我们可以直接使用this.inputValue,但事件触发时,this.inputValue可能还未更新,所以建议使用event.detail.value//实际上,uni-app的input组件,事件对象是event.detail.value,所以:this.inputValue=value;//如果使用v-model则不需要,因为v-model已经绑定if(value.includes('\u2014')){console.log('包含破折号');//或者进行其他操作,比如提示用户}}}但是,更常见的做法是使用v-model绑定,然后在watch中监听inputValue的变化,或者在input事件中直接处理。所以,另一种写法(使用v-model):<inputtype="text"v-model="inputValue"@input="onInput"/>methods:{onInput(){//此时,this.inputValue已经更新if(this.inputValue.includes('\u2014')){console.log('包含破折号');}}}或者,不使用v-model,而是使用@input事件更新inputValue,并同时检测。选择哪种方式取决于个人习惯。下面提供一个完整的示例代码:模板部分:<template><view><inputtype="text"v-model="inputValue"@input="checkDash"/><viewv-if="hasDash">输入内容包含破折号!</view></view></template>脚本部分:<script>exportdefault{data(){return{inputValue:'',hasDash:false}},methods:{checkDash(){this.hasDash=this.inputValue.includes('\u2014');}}}</script>这样,当输入框内容包含破折号时,下方会显示提示。注意:如果需求是检测其他类型的破折号,请调整检测的字符。另外,如果用户输入的是两个连续的短横线(比如“--”)来表示破折号,那么我们需要检测两个连续的短横线吗?这取决于需求。通常,在中文中,破折号是一个长横线(U+2014),但有些情况下用户可能用两个短横线代替。如果需求包括这种情况,那么我们需要额外检测。我们可以这样扩展:checkDash(){//检测单个emdash(U+2014)或两个连续的hyphen(--)this.hasDash=this.inputValue.includes('\u2014')||this.inputValue.includes('--');}但是,注意两个连续的hyphen也可能出现在正常文本中(比如单词之间的连字符),所以需要谨慎。最好明确需求。综上所述,根据问题描述,我们主要检测中文破折号(U+2014)。如果需求有扩展,再相应调整。因此,我们按照检测U+2014来实现。</think>在 UniApp 中检测输入框内容是否包含破折号,可以通过以下步骤实现: ### 解决方案(使用 JavaScript 正则表达式) ```vue <template> <view> <input type="text" v-model="inputValue" @input="checkForDash" placeholder="请输入内容" /> <view v-if="containsDash" class="warning"> 输入内容包含破折号! </view> </view> </template> <script> export default { data() { return { inputValue: '', containsDash: false } }, methods: { checkForDash() { // 正则表达式检测中文破折号(——)和英文破折号(—) const dashPattern = /[———]/; // 检测输入内容 this.containsDash = dashPattern.test(this.inputValue); } } } </script> <style> .warning { color: #f56c6c; margin-top: 10px; font-size: 14px; } </style> ``` ### 关键说明: 1. **正则表达式解释**: - `/[———]/` 匹配三种常见破折号: - 中文全角破折号 `——`(U+2014) - 中文连字号 `—`(U+2013) - 英文短横线 `-`(U+002D) 2. **实现原理**: - 使用 `v-model` 绑定输入框值到 `inputValue` - 通过 `@input` 事件触发检测方法 - 正则表达式 `test()` 方法返回布尔值 - 根据结果控制提示信息的显示 3. **扩展功能建议**: ```javascript // 如果需要获取破折号位置: findDashPosition() { const dashIndex = this.inputValue.search(/[———]/); console.log('破折号位置:', dashIndex); } // 如果需要替换破折号: replaceDash() { return this.inputValue.replace(/[———]/g, '*'); } ``` ### 注意事项: 1. 不同输入法产生的破折号 Unicode 不同,上述正则已覆盖常见情况 2. 若需严格区分中英文破折号,可拆分检测: ```javascript const chineseDash = /——/; // 中文破折号 const englishDash = /—/; // 英文破折号 ``` 3. 在真机测试时注意键盘差异,建议使用 `console.log` 输出实际字符编码 > 此方案兼容 UniApp 全平台(iOS/Android/小程序),事件响应符合 Vue 响应式规范[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值