‘壹’ java 怎么截取指定长度的中文数字串
通过char值去判断字符串里面的汉字,在截取的范围内,每出现一个汉字,截取时长度+1
‘贰’ java中如何截取字符串
截取字符串采用的是java中的split函数。
例把“01:大众汽车”截取为01和大众汽车,代码如下:
package test;
public class substringTest
{
public static void main(String args[])
{
String N = "01:大汽车";
String L="";
String R="";
int k= N.length();
for (int i = 0; i < N.length(); i++)
{
if (N.substring(i, i + 1).equals("|"))
{
L=N.substring(0,i).trim();
R=N.substring(i+1,k).trim();
}
else
{
}
System.out.println(L);
System.out.println(R);
}
}
}
‘叁’ java截取中文字符串。
public static void main(String args[])
{
String str="看看以下回答是否解决了您的疑问" ;
//提取子字符串,头一个表示开头的索引(包括),后一个表示结束的索引(不包括)
//索引是在字符串的位置,从0开始
//str.substring(0, 7)表示从第0位到第6位(因为不包含第七位)
//英文字符串也是类似的
String substr = str.substring(0, 7) ;
System.out.println(substr);
}
‘肆’ java截取字符串
public class StringTest {
public static void main(String[] args) {
String string = "file:/C:/Users/Administrator.SC-201805071245/Desktop/新建文件夹/demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/";
String substr = string.substring(string.indexOf("/")+1, string.substring(0, string.lastIndexOf(".jar")).lastIndexOf("/")+1);
System.out.println(substr);
}
}
‘伍’ java截取指定字符串中的某段字符如何实现
如下图,给你贴出了代码段。可以利用字符串的substring函数来进行截取。
结果是:456789(注意:包括4。)
示例:
"hamburger".substring(3,8) returns "burge"
"smiles".substring(0,5) returns "smile"
‘陆’ java截取字符串函数
这个程序是通过先把字符串转换为byte 数组然后根据你要截取的字符串长度截取字符串的。
byte bt[] = str.getBytes(); //转化为字节数组。
if(bt[byteNum]<0)//判断截取的长度,截取的长度不能是否小于0
{
String substrx=new String(bt,0,--byteNum);
/*String(byte[] ascii, int hibyte)
已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 起,完成该转换的首选方法是通过 String 构造方法,该方法接受一个字符集名称或使用平台的默认字符集。*/
//建议: 学习的时候多看看API
‘柒’ 求截取带中文的字符串的java方法。
楼主你好,很高兴能回答你这个很有挑战性的问题,首先我谈谈我对上面9个例子的理解,即这个方法应该实现的功能:
这个方法与JDKString原有的方法substring是有区别的,在这个方法里,一个中文汉字相当于占2个英文字符的位置。而且根据方法传入的参数pStart和pEnd在返回相应的子字符串child
如果pstart刚好在某个汉字的前半部分,则child应包含该汉字,在后部分则不含。与之相对应的是pEnd如果在某个汉字的后半部分,则child应含该汉字,否则不包含,如果pStart超出pStr的长度(这里一个汉字长度算2),则返回空,其他性质和JDK的性质形同。
如果觉得我的理解不错,且看下面的代码:
publicclassTest{
publicTest(){
Stringstr="ABCDE";
Stringstr2="ABC你D";
Stringstr3="A你B好C吗勇DE";
System.out.println("1str='ABCDE'start=1end=5结果:"+getSubString(str,1,5));
System.out.println("2str='ABCDE'start=1end=4结果:"+getSubString(str,1,4));
System.out.println("3str='ABCDE'start=2end=4结果:"+getSubString(str,2,4));
System.out.println("4str='ABCDE'start=6end=7结果:"+getSubString(str,6,7));
System.out.println("5str='ABCDE'start=5end=5结果:"+getSubString(str,5,5));
System.out.println("6str2='ABC你D'start=1end=3结果:"+getSubString(str2,1,3));
System.out.println("7str2='ABC你D'start=1end=4结果:"+getSubString(str2,1,4));
System.out.println("8str2='ABC你D'start=1end=5结果:"+getSubString(str2,1,5));
System.out.println("9str2='ABC你D'start=4end=4结果:"+getSubString(str2,4,4));
System.out.println("10str3='A你B好C吗勇DE'start=9end=10结果:"+getSubString(str3,9,10));
}
publicstaticvoidmain(Stringargs[]){
newTest();
}
publicStringgetSubString(Stringstr,intpstart,intpend){
Stringresu="";
intbeg=0;
intend=0;
intcount1=0;
char[]temp=newchar[str.length()];
str.getChars(0,str.length(),temp,0);
boolean[]bol=newboolean[str.length()];
for(inti=0;i<temp.length;i++){
bol[i]=false;
if((int)temp[i]>255){//说明是中文
count1++;
bol[i]=true;
}
}
if(pstart>str.length()+count1){
resu=null;
}
if(pstart>pend){
resu=null;
}
if(pstart<1){
beg=0;
}else{
beg=pstart-1;
}
if(pend>str.length()+count1){
end=str.length()+count1;
}else{
end=pend;//在substring的末尾一样
}
//下面开始求应该返回的字符串
if(resu!=null){
if(beg==end){
intcount=0;
if(beg==0){
if(bol[0]==true)
resu=null;
else
resu=newString(temp,0,1);
}else{
intlen=beg;//zheli
for(inty=0;y<len;y++){//表示他前面是否有中文,不管自己
if(bol[y]==true)
count++;
len--;//想明白为什么len--
}
//for循环运行完毕后,len的值就代表在正常字符串中,目标beg的上一字符的索引值
if(count==0){//说明前面没有中文
if((int)temp[beg]>255)//说明自己是中文
resu=null;//返回空
else
resu=newString(temp,beg,1);
}else{//前面有中文,那么一个中文应与2个字符相对
if((int)temp[len+1]>255)//说明自己是中文
resu=null;//返回空
else
resu=newString(temp,len+1,1);
}
}
}else{//下面是正常情况下的比较
inttemSt=beg;
inttemEd=end-1;//这里减掉一
for(inti=0;i<temSt;i++){
if(bol[i]==true)
temSt--;
}//循环完毕后temSt表示前字符的正常索引
for(intj=0;j<temEd;j++){
if(bol[j]==true)
temEd--;
}//循环完毕后temEd-1表示最后字符的正常索引
if(bol[temSt]==true)//说明是字符,说明索引本身是汉字的后半部分,那么应该是不能取的
{
intcont=0;
for(inti=0;i<=temSt;i++){
cont++;
if(bol[i]==true)
cont++;
}
if(pstart==cont)//是偶数不应包含,如果pstart<cont则要包含
temSt++;//从下一位开始
}
if(bol[temEd]==true){//因为temEd表示substring的最面参数,此处是一个汉字,下面要确定是否应该含这个汉字
intcont=0;
for(inti=0;i<=temEd;i++){
cont++;
if(bol[i]==true)
cont++;
}
if(pend<cont)//是汉字的前半部分不应包含
temEd--;//所以只取到前一个
}
if(temSt==temEd){
resu=newString(temp,temSt,1);
}elseif(temSt>temEd){
resu=null;
}else{
resu=str.substring(temSt,temEd+1);
}
}
}
returnresu;//返回结果
}
}
测试结果如图,并且可以任意修改字符串,保证结果正确。
That'sall!
‘捌’ java 截取字符串第一个字符
使用substring() 方法返回字符串的子字符串。详细解析如下:
1、语法:
(1)public String substring(int beginIndex)。
(2)public String substring(int beginIndex, int endIndex)。
2、参数:
(1)beginIndex -- 起始索引(包括), 索引从 0 开始。
(2)endIndex -- 结束索引(不包括)。
3、返回值:
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
4、substring函数存在的抛出错误:
IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。
5、实例代码如下: