Android Studio Java中对应C#的.Remove方法是什么?实现EditText点按删单字符
问题描述
我正在开发一款带删除按钮的计算器,期望点击删除按钮时每次删除EditText中的一个字符,例如按下DEL按钮时,EditText末尾的数字3会被移除。我当前编写的删除按钮C#代码如下:
if (txtResult.length() > 0){ txtResult = txtResult.getText().Remove(txtResult.length() - 1); if (txtResult.equals("")){ txtResult.setText("0"); } }
请问在Android Studio的Java开发环境中,对应C#的.Remove方法的等效实现是什么?
实现方案
C#中Remove(startIndex)方法的作用是删除字符串从startIndex位置到末尾的所有字符,Java中可以使用String.substring()方法实现完全等效的效果,适配Android场景的完整代码如下:
// 点击DEL按钮的触发逻辑 delBtn.setOnClickListener(v -> { String content = txtResult.getText().toString(); if (content.length() > 0) { // 等效C# Remove(txtResult.length() - 1)的核心实现 String newContent = content.substring(0, content.length() - 1); if (newContent.isEmpty()) { txtResult.setText("0"); } else { txtResult.setText(newContent); } // 可选优化:将光标移动到文本末尾,符合用户操作习惯 txtResult.setSelection(txtResult.getText().length()); } });
方法说明
- Java的
substring(int beginIndex, int endIndex)会返回起始下标beginIndex到结束下标endIndex前一位的子字符串,因此截取0到content.length() - 1的内容,刚好可以删掉字符串最后一位,和你原来C#代码的逻辑完全一致。 - 注意Android中
EditText.getText()返回的是Editable类型,需要先转成普通String再做截取操作,处理完成后再调用setText()把新内容赋值给控件。
内容的提问来源于stack exchange,提问作者WiloWisk
相关产品推荐
相关产品推荐

