String如何截取字符串长度
20应届生面试题:使用String引用类型的时候,用过哪些方法?比如如何截取一段给定字符串的长度?
答:没回答上来!(没用过截取字符串)
String引用类型中有一个叫做substring的方法,这个就是用来截取字符串的。
Ctrl+鼠标左键点进了substring方法内,查看到了以下源码。
//小白的理解://beginIndex是起始位置,endIndex是末端位置public String substring(int beginIndex, int endIndex) {//起始位置不能小于0 不然没有意义if (beginIndex < 0) {throw new StringIndexOutOfBoundsException(beginIndex);}//同理末端位置的值不能大于实际长度,超过实际长度截取没有意义if (endIndex > value.length) {throw new StringIndexOutOfBoundsException(endIndex);}//实际要截取的位置,就是末端位置-起始位置的值,比如7-1=6//6就是截取出来的长度int subLen = endIndex - beginIndex;//当然截取长度不能是小于零的数。if (subLen < 0) {throw new StringIndexOutOfBoundsException(subLen);}//这里就是返回所截取长度的新的字符串了,//他是按照你所输入的始末位置所自定义出来的//其实这里没咋看懂,就知道是返回实际长度的//如果起点位置的值是0开始,末端位置的值是最大长度。那么就返回原字符串//否则按照始末位置返回一个新的你自己所定义出来的字符串return ((beginIndex == 0) && (endIndex == value.length)) ? this: new String(value, beginIndex, subLen);}
源码里为什么一直在判断0,应该和String这个引用类型的实现原理有关,String它是一个char数组的储存结构。某种意义上也是一个数组。所以起始端按照数组里的定义,第0个元素实际上就是直观上的第一个元素。
(我是一个小白,对实现原理不懂所以只能说点自己所能理解的了)
以下是我用IDEA处于好奇,使用代码测试了一下。
System.out.println("=======================");String c = "abc".substring(0,3);String c1 = "abc".substring(1,3);String c2 = "abc".substring(2,3);String d = "abcdf".substring(0,0);System.out.println(c);System.out.println(c1);System.out.println(c2);System.out.println(d);System.out.println("=======================");
String d1 = "abcdf".substring(0,6);System.out.println(d1);
这个错误和源码里的末端值超过实际长度的异常名字一样
if (endIndex > value.length)
throw new StringIndexOutOfBoundsException(endIndex);
String如何截取字符串长度相关推荐
- C++ string常用截取字符串方法
string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...
- c++语言截取字符串,详解C++ string常用截取字符串方法
string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...
- c语言中截取字符串 sub,详解C++ string常用截取字符串方法
string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...
- java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...
一般是用在字符串中有html标签的截取. 如: 后台发布用了在线编辑器, 前台显示内容要截取的情况. import Java.util.ArrayList; import java.util.List ...
- C++ string 简单截取字符串使用
用法1:截取下标从2(第3个字符起)开始到字符串结尾的字符串: #include <string> #include <iostream> using namespace st ...
- PHP截取字符串长度
我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用-表示,以下函数可以满足你的需求. 代码如下: /* Utf-8.gb2312都支持的汉字截取函数 cu ...
- 小程序 页面 中 截取字符串长度 超过显示 多余的 用省略号
1.首先 在对应页面下新建 " center.wxs " 文件 这个文件是小程序自身 一套脚本语言 2.在 .wxs 文件中 写 截取字符串的 方法 // 小程序页面中 ...
- java js 截取字符串_java和Js 按字节来截取字符串长度(为了符合数据库varchar)
/** * 截取符合oracle varchar长度的字符集 * * @author 陈兵 * */ public class SplitString { public static String s ...
- php mysql 截取字符串长度,mysql字符串截取
MySQL 字符串截取函数有:left(), right(), substring(), substring_index().还有 mid(), substr(); 一:left(str, lengt ...
最新文章
- 电子时钟单片机c语言程序,51单片机电子时钟C语言程序
- 微信小程序客服消息使用指南
- Java List 排序 :Lambda表达式sort排序
- SAP UI5 应用开发教程之四十六 - 使用 Message Manager 实现开箱即用的验证(Validation)信息抛出
- CRM WebClient UI的浏览器打印实现
- Citrix路径遍历(CVE-2019-19781)
- Request 对象、重定向、请求转发
- hihocoder第229周:最大连续字母个数
- 房租抵扣个税不用再填房东信息 房东这下放心了吗?
- 手机万能摄像头ip搜索工具_一款 APP,130 多种功能,让你的手机秒变万能工具箱...
- MA1 轻轻松松学统计分析(上)
- linux du 查看文件夹大小
- vue组件eleme 时间选择器问题
- leetcode 面试题57 - II. 和为s的连续正数序列
- 密码学复习笔记2【分组密码/S-DES、DES】
- userenv和sys_context函数
- 简单实用,聊聊我常用的 4 款 Pandas 自动数据分析神器
- Flink系列文档-(YY05)-Flink编程API-多流算子
- Ubuntu子系统上安装miniconda.sh 438、444报错
- 2的1000次方的各位之和是多少?