精华内容
下载资源
问答
  • java截取字符串

    2015-08-14 23:59:35
    要求:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...

    要求:

    编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个

    package IO加强;
    
    import java.io.UnsupportedEncodingException;
    import java.util.Properties;
    
    public class StringCut {
        public static void main(String[] args)  {
                //gbk一般汉字是两个字节,字母是一个字节,而有些汉字比如说“琲”是-84 105(一正一负)
                String str="你好hj琲琲琲";
    
                byte[] bt;
    //          try {
    //              //bt=str.getBytes("gbk");//获得gbk字节码
    //              bt = str.getBytes("utf-8");
    //          } catch (UnsupportedEncodingException e) {
    //              e.printStackTrace();
    //          }
                bt=str.getBytes();
                //观察
                for(byte b:bt){
                    System.out.print(b+" ");
                }
                System.out.println();
                //测试
                System.out.println(str);
                System.out.println("-----------");
                for(int i=0;i<=bt.length;i++){
                    String s=cutByByte(str,i);
                    //String s=cutByByteGbk(str,i);
                    //String s=cutByByteUtf8(str,i);
                    System.out.println("截取第"+i+"个字节结果是: "+s);
                }
    
        }
    
        private static String cutByByteGbk(String str, int len){
            try {
                byte[] bt=str.getBytes("gbk");
                int count=0;
                for(int i=len-1;i>=0;i--){
                    if(bt[i]<0){
                        count++;
                    }else{
                        break;
                    }
                }
                if(count%2==0){
                    return new String(bt,0,len,"gbk");
                }else{
                    return new String(bt,0,len-1,"gbk");
                }
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException("gbk字符串解码异常");
            }
        }
        private static String cutByByteUtf8(String str, int len){
            try {
                byte[] bt=str.getBytes("utf-8");
                int count=0;
                for(int i=len-1;i>=0;i--){
                    if(bt[i]<0){
                        count++;
                    }else{
                        break;
                    }
                }
                if(count%3==0){
                    return new String(bt,0,len,"utf-8");
                }else{
                    return new String(bt,0,len-(count%3),"utf-8");
                }
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException("utf-8字符串解码异常");
            }
        }
        private static String cutByByte(String str, int len){
            if(System.getProperty("file.encoding").equalsIgnoreCase("gbk")){
                return cutByByteGbk(str, len);
            }else if(System.getProperty("file.encoding").equalsIgnoreCase("utf-8")){
                return cutByByteUtf8(str, len);
            }
            return "";
        }
    }
    
    展开全文
  • 正则表达式 java 截取指定字符中间的字符串 代码如下(示例): import java.util.regex.Matcher; import java.util.regex.Pattern; public class Method { public static void main(String[] args) { // ...

    正则表达式 java 截取指定字符中间的字符串

    代码如下(示例):

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class Method {
     
        public static void main(String[] args) {
     		// 正则表达式,截取照片_ 与 _ 中间的字符串
            String regex = "照片_(.*)_";
            String fileName= "照片_530121198502181698_正面";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(fileName);
            while(matcher.find()){
            	// 打印中间字符
                System.out.println(matcher.group(1));
            }
        }
    }
    

    如果遇到抛异常:Exception in thread “main” java.lang.IllegalStateException: No match found
    原因是用法不对:需要先find,然后group才能有数据
    代码如下(示例):

    while(matcher.find()){
         // 打印中间字符
         System.out.println(matcher.group(1));
    }
    
    展开全文
  • java 截取字符串获取子字符串

    万次阅读 2017-09-14 10:46:13
    substring(int beginIndex): 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。 substring(int beginIndex,int endIndex) :返回一个新字符串,它是此字符

    两种方法:

    1. substring(int beginIndex): 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。

    2. substring(int beginIndex,int endIndex) :返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

    简单示例1:

    package com.yubai;
    
    /**
     * Created by bayu on 9/13/2017.
     */
    public class string {
        public static void main(String[] args) {
            //定义字符串
            String str = "hello world!";
    
            //获取字符串的长度
            System.out.println(str.length());
    
            //截取子字符串
            System.out.println(str.substring(1, 3));
    
            //截取子字符串
            System.out.println(str.substring(3));
    
            //截取子字符串,长度大于或者为负数,则抛异常--IndexOutOfBoundsException
    //        System.out.println(str.substring(123));
    //        System.out.println(str.substring(-1));
        }
    }

    运行结果:

    12
    el
    lo world!

    简单示例2:

    需求:把”01:大汽车”,分成01和大汽车

    方法一:通过substring方法解决

    package com.yubai;
    
    /**
     * Created by bayu on 9/13/2017.
     */
    public class subString {
        public static void main(String[] args) {
            String str = "   01:大汽车   ";
            String L = "";
            String N = "";
    
            int strLength = str.length();
    
            for (int i = 0; i < strLength; i++) {
                if(str.substring(i, i + 1).equals(":")){
                      L = str.substring(0,i).trim();
                      N = str.substring(i+1,strLength).trim();
                }
            }
            System.out.println(L);
            System.out.println(N);
        }
    }

    方法二:通过split方法解决

    package com.yubai;
    
    /**
     * Created by bayu on 9/13/2017.
     */
    public class split {
        public static void main(String[] args) {
            String str = "   01:???   ";
            String[] strArray = str.split(":");
            System.out.println(strArray[0].trim());
            System.out.println(strArray[1].trim());
        }
    }

    方法三:通过正则表达式解决

    package com.yubai;
    
    /**
     * Created by bayu on 9/12/2017.
     */
    public class Test {
        public static void main(String[] args) {
            String str = "one123";
            String regex = "(?<=one)(?=123)";
    
            String[] strs = str.split(regex);
            for (int i = 0; i < strs.length; i++) {
                System.out.printf("strs[%d] = %s%n", i, strs[i]);
    
            }
        }
     }

    StringUtils.substringBefore(“dskeabcee”, “e”);
    /结果是:dsk/
    这里是以第一个”e”,为标准。

    StringUtils.substringBeforeLast(“dskeabcee”, “e”)
    结果为:dskeabce
    这里以最后一个“e”为准。

    注意: 这个例子需要学习正则表达式???

    http://www.cnblogs.com/sflik/p/5481496.html
    http://www.cnblogs.com/luqingsong/archive/2011/02/16/1956458.html
    http://www.jb51.net/article/46629.htm
    http://blog.csdn.net/bangrenzhuce/article/details/52303177

    展开全文
  • Java 截取字符串

    2015-07-07 22:02:24
    今天做开发,正好遇到切分字符串这个需求,以前用过,但是快忘了。今天特意写下来,记下,以后方便看。... 其实,java 切分字符串用substring这个方法。  substring这个方法是重载的,有2个方法,分别是 public

         今天做开发,正好遇到切分字符串这个需求,以前用过,但是快忘了。今天特意写下来,记下,以后方便看。在这里说一下我对博客的理解,我觉得博客最大的作用就是可以记录一些笔记,方便自己以后看,而且自己的知识说不定还可以帮助别人,一举多得。不扯了,下面说知识点:

         其实,java 切分字符串用substring这个方法。

        substring这个方法是重载的,有2个方法,分别是 public String substring(int beginIndex)  和  public String substring(int beginIndex, int endIndex) 这两个方法。

       先说public String substring(int beginIndex)  这个方法,参数beginIndex,英文稍好一点,就知道是开始的意思,这个方法是获得字符串的第beginIndex位置往后的字符串,返回值是String,就把这个获得后的字符串返回回去了。(返回的字符串将会截取掉前 beginIndex 个字符)

       再说public String substring(int beginIndex, int endIndex)  这个方法,有2个参数,beginIndex 和endIndex,beginIndex是开始的位置,endIndex是结束的位置,传进去这两个参数后,返回的String类型就是在beginIndex位置和endIndex之间的字符串。(返回的字符串包括第beginIndex这个位置和endIndex位置的字符串,位置是从0开始计算的)

      注意:即使字符串是“”,那么字符串的length也会是0,而不会抛异常。如果这个方法抛异常,那么原因就是这个字符串为null了,或者字符串达不到 beginIndex 和 endIndex 的长度。

      下面是例子程序:

    String tring = "这封信是戴安澜在1937年11月11日写给身在老家的堂兄戴汝琴和戴汝传的。戴安澜在信中表示身为军人,不能保土卫民,拿此巨薪,于心何忍?特提出一千元捐助国家,以作经费报效。";
    		String kString = "";
    		System.out.println(tring.length()+"");
    		if (tring.length() < 30) {
    			kString = tring.substring(0, tring.length());
    		} else {
    			kString = tring.substring(0, 30) +"....";
    		}
    		System.out.println(kString);


    展开全文
  • substring() 方法返回字符串的子字符串。 1. public String substring(int beginIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 参数:beginIndex - ...
  • 如何按照字节截取String字符串 按字节截取字符串的思路是将String转换为byte进行操作 ​ 核心方式是String.getBytes(Charset charset) ​ charset传入字符编码 ​ 该方法返回一个字节数组 byte[ ] package test; ...
  • Java截取字符串的方法

    2019-08-06 16:23:23
    subString()方法:按索引截取字符串2.1 传入一个参数:subString(int beginIndex)2.2 传入两个参数:substring(int beginIndex, int endIndex)2.3 substring()+indexOf():根据某个字符截取字符串参考资料 ...
  • java截取字符串方法

    2017-11-14 10:44:00
    返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 例如: "unhappy".substring(2) returns "happy" "Harbison".substring(3) returns "bison" ...
  • 具体的在我的博文:...想要截取字符串.... str-->s? 从str里面截取字符串数组,资源代下载再从数组中的字符串[key|value]解析成为前缀和后缀.解析后放入list<SonNav>(SonNav(Stringkey,Stri...
  • java截取字符串—substring的用法

    万次阅读 2018-11-22 11:54:51
    前言:遇到如下问题,excel导出来的数据多了一个逗号,把结尾的逗号去掉。 String area = "";...1.substring(x)是从字符串的第x个字符截取 2.substring(x,y)是从字符串的第x个字符到第y个字符位置的停止
  • java中substring字符串截取

    千次阅读 2018-06-06 14:54:07
    substring() 方法用于提取字符串中介于两个指定下标之间的字符。语法string.substring(start,stop);返回值一个新的字符串,该字符串值包含 string 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符...
  • java按字节截取字符串

    2019-08-21 14:58:11
    需求:oracle有个备注长度只有100,但是不能扩大,只能截取java传输过程中的字符长度 如何知道一个汉字在Oracle数据库中具体占用几个字节? 方式一:这个其实和Oracle的配置是相关的,用以下语句查询当前数据库的字符...
  • 对于一个包含着这个网页源代码的字符串content要截取其中的收
  • )Java(Android)截取字符串间的内容 大家有时可能遇到这样子的问题,比如需要截取"&lt;p&gt;你好&lt;/p&gt;"直接的内容,但是安卓提供的java.lang.String.substring()方法并不能满足各种...
  • java类型转换,字符串截取工具类,sql注入过滤工具类,基本类型转换可以设置异常时的默认值,字符串截取指定位置,长度,sql注入过滤
  • 在做接口自动化过程中,需要获取请求/响应的xml报文,因为是银行系统,服务器组报文了发送到ESB服务器,请求和响应的报文会打印在ESB服务器的日志中,当要截取N个请求的报文时通过人工截取显然效率低下,所有写了一...
  • 编写一个截取字符串的函数题目要求考察点GBK编码:代码运行截图其他说明方法异常思路测试第二条str运行结果 题目要求 编写一个截取字符串的函数,输入为一个字符串的和字节数,输出为按字节截取字符串,但要保证...
  • 插入数据库时,如果字符超长可能会出sql异常,因此超长字符串可以进行截取。包含中文的也可以 public static String bSubstring(String s, int length) throws Exception { byte[] bytes = s.getBytes("...
  • 在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。  1、用竖线 | 分隔字符串,你将得不到预期的结果 String[] aa = "aaa|bbb|ccc".split("|"); //String[] ...
  • 【基站告警信息】区域信息:邢台-邢台网管名称:华为LTE新网管网络流水号:100185229 告警名称:射频单元维护链路异常告警网元名称:XT临城县东开发区-2-F-TT(DX) 网元类型:BTS3900 LTE 网元标识:NE:492 告警ID...
  • 环境:SpringBoot2 org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE 目的:截取到指定字符之前和之后的字符 java api 源码 public static List stringToList(String str){ //排null if (str....
  •  String类下的split方法,可以按照指定的定界字符串,对某一字符串进行分割,将待分割字符串中参考字符串前后的字符串提取出来,作为返回值。返回类型为String中,维度由分割完成的结果决定,但内容中会直接去掉定...
  • Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 6 程序代码如下: public class L1 { public static void main(String[] args) { String product = ...
  • public String String_length(String value, int maxSize) { if(StringUtils.isNotBlank(value)){ int valueLength = 0;... } 主要用于按需要长度截取字符串 eg: String_length(obj.getRemark(), 80)
  • 最近做项目Android时遇到了字符串截取,判断字符串是否相等和字符串是否为空问题刚好用的上自己也知道些,所以整理了方便以后用,和供大家参考,有什么更好的方法或者其它方法我么可以一起交流,谢谢大家!
  • 转载请注明出处 待截取字符串 String str1 = "<a href=http://write.blog.csdn.net/mdeditor/1232>32...我们需要截取12312 这个字符串校验字符串空和异常处理自己做,直接上干货Pattern p = Pattern.compile("mdedi
  • java实现获取字符串strSub在父字符串strFather中出现的次数
  • [Java] 按字节截取字符串 要求:输入一字符串截取字节数,汉字不能被截取半个,向下取字符。 输入输出示例: 输入: abc我爱你 6 输出:abc我 输入: abc我爱你 7 输出:abc我爱 分析: 在不同的编码规范中,汉字...
  • 一、题目分析 保证汉字不被截半个:把字符串转换为byte[] bt ,中文会被转换成负数,即bt[i]<0说明是中文 二、代码 我这里使用“GBK”编码... * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,487
精华内容 9,394
关键字:

java截取异常字符串

java 订阅