
本文介绍在 android 开发中,如何使用 java 的 `substring()` 方法从 edittext 获取用户输入的前 n 个字符(如仅取手机号前三位),并附带边界处理与安全实践。
在 Android 应用开发中,经常需要对用户在 EditText 中输入的内容进行截取处理,例如提取身份证号前6位、手机号前3位用于运营商识别,或限制验证码输入框仅读取前4位。最直接高效的方式是利用 Java 字符串的 substring(int beginIndex, int endIndex) 方法。
但需注意:直接调用 editText.toString() 是错误的! EditText 对象本身不是字符串,其正确获取文本的方法是 editText.getText().toString()。此外,必须校验输入长度,避免 StringIndexOutOfBoundsException 异常。
✅ 正确示例代码(Java):
EditText editText = findViewById(R.id.editText);
String input = editText.getText().toString().trim(); // 去除首尾空格
// 安全截取前3位(若不足3位,则取全部)
String firstThree = input.length() >= 3
? input.substring(0, 3)
: input;
// 赋值给变量(如用于后续逻辑)
String prefix = firstThree;⚠️ 关键注意事项:
- 始终先调用 .getText().toString(),而非 .toString()(后者返回 EditText 对象的类名+哈希码,非用户输入);
- 使用 .trim() 防止空格干扰长度判断;
- 必须检查字符串长度,substring(0, 3) 在空字符串或长度
- 若需数字类型结果(如 int prefixNum = Integer.parseInt(prefix);),请额外捕获 NumberFormatException;
- Kotlin 用户可进一步简化为:editText.text.take(3).toString(),天然安全且简洁。
总结:substring() 是轻量可靠的截取工具,但生产环境务必结合空值校验、长度判断与异常防护——这不仅是代码健壮性的体现,更是用户体验的关键保障。










