002.Java字符串操作

原始资料来源:http://c.biancheng.net/view/5820.html

001.字符串与整型int的转换

       String 字符串转整型 int 有以下两种方式:

  • Integer.parseInt(str)
  • Integer.valueOf(str).intValue()

       整型 int 转 String 字符串类型有以下 3 种方法:

  • String s = String.valueOf(i);
  • String s = Integer.toString(i);
  • String s = "" + i;

002.字符串的连接: 

  • 使用连接运算符 +  : 这种方法使用得最多,个人感觉也最方便;可以连接任意类型的数据;
  • 使用 concat() 方法;一次调用只能连接一个字符串,但好在可以连接调用. 如: 
    String info="三国".concat("x").concat("y");

003.字符串其它小函数: String str

  • 取字符串长度: str.length();
  • 大小写转换:     str.toLowerCase();    str.toUpperCase();
  • 字符串前后空格清理: str.trim();
  • 字符串替换:
    • replace(String oldChar, String newChar)  将目标字符串中的指定字符(串)替换成新的字符(串)
      str.replace((char) 12288, ' ');     将中文空格替换成英文空格;  12288 是中文全角空格的 unicode 编码。
    • .replaceFirst(String regex, String replacement) 用于将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串
    • replaceAll(String regex, String replacement) 将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串
  • 字符串的截取:str.substring(int beginIndex,int endIndex)
    --> 该方法用于提取位置 beginIndex 和位置 endIndex 位置之间的字符串部分。
    --> 包含 beginIndex, 不包含 endIndex;
    --> 字符串首字符索引为: 0; 
  • 字符串的分割: str.split(String sign,int limit)
    • str 为需要分割的目标字符串。
    • sign 为指定的分割符,可以是任意字符串。
    • limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。
      (前面 limit-1 个元素是正常分割的,其余部分全部做为最后一个元素,不做分割)
    • 使用分隔符注意如下:
      1)“.”和“|”都是转义字符,必须得加“\\”。
      • 如果用“.”作为分隔的话,必须写成String.split("\\."),这样才能正确的分隔开,不能用String.split(".")
      • 如果用“|”作为分隔的话,必须写成String.split("\\|"),这样才能正确的分隔开,不能用String.split("|")
      2)如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or")
  • 字符串比较
    --> str1.equals(str2);  逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,返回 true,否则返回 false。区分大小写
        注意 == 比较的不同: 
        equals比较的是字符,只要字符一样就OK;    湖南张三。湖北张三: 只要名字一样就OK, 
        == 比较的是不是同一个实例对象;                  湖南张三,湖北张三:不一样,虽然名字一样,但不是同一人;只有在同一个人的时候才OK
    --> equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是 equalsIgnoreCase() 比较时不区分大小写
    --> compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值
          
    str.compareTo(String otherstr);   str小: 返回负数; str大:返回正数;  str与otherstr一样大:返回0
  • 字符查找
    --> str.indexOf(value,int fromIndex)  : 返回字符(串)在指定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1
        str 表示指定字符串;value 表示待查找的字符(串);fromIndex 表示查找时的起始索引,如果不指定 fromIndex,则默认从指定字符串中的开始位置查找(索引位:0)。
    --> str.lastlndexOf(value, int fromIndex): 返回字符(串)在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1
        注意:lastIndexOf() 方法的查找策略是从右往左查找,如果不指定起始索引,则默认从字符串的末尾开始查找。如果指定了索引,则从索引位往前查找;
    --> 字符串名.charAt(索引值) : 在字符串内根据指定的索引查找字符

004.注意空字符串和NULL

      null: 表示对象未被实例化;
      字字符串:对象已实例化,只不过内容是空而已

005. StringBuffer类

    --> StringBuffer 类提供了 3 个构造方法来创建一个字符串,如下所示:

  • StringBuffer() 构造一个空的字符串缓冲区,并且初始化为 16 个字符的容量
  • StringBuffer(int length) 创建一个空的字符串缓冲区,并且初始化为指定长度 length 的容量
  • StringBuffer(String str) 创建一个字符串缓冲区,并将其内容初始化为指定的字符串内容 str,字符串缓冲区的初始容量为 16 加上字符串 str 的长度

    -->  StringBuffer 对象.append(String str) : 追加内容到当前 StringBuffer 对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer 对象的内容也发生了改变,

    -->  StringBuffer 对象.setCharAt(int index, char ch);  字符串的指定索引位置替换一个字符;  修改对象中索引值为 index 位置的字符为新的字符 ch

    -->  StringBuffer 对象.reverse();将字符串序列用其反转的形式取代;  

    -->  StringBuffer 对象.deleteCharAt(int index); 移除序列中指定位置的字符;   删除指定位置的字符,然后将剩余的内容形成一个新的字符串

           StringBuffer 对象.delete(int start,int end); 移除序列中子字符串的字符;   
                               start 表示要删除字符的起始索引值(包括索引值所对应的字符),end 表示要删除字符串的结束索引值(不包括索引值所对应的字符)。

006. String, StringBuffer, StringBuilder 类的区别

       

 

 

  String 是 Java 中基础且重要的类,被声明为 final class,是不可变字符串。因为它的不可变性,所以拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。StringBuffer 就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类。它提供了 append 和 add 方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列。在很多情况下我们的字符串拼接操作不需要线程安全,所以 StringBuilder 登场了。StringBuilder 是 JDK1.5 发布的,它和 StringBuffer 本质上没什么区别,就是去掉了保证线程安全的那部分,减少了开销。

      

007. 正则表达式

      --> String 类里也提供了如下几个特殊的方法。

  • boolean matches(String regex):判断该字符串是否匹配指定的正则表达式。
  • String replaceAll(String regex, String replacement):将该字符串中所有匹配 regex 的子串替换成 replacement。
  • String replaceFirst(String regex, String replacement):将该字符串中第一个匹配 regex 的子串替换成 replacement。
  • String[] split(String regex):以 regex 作为分隔符,把该字符串分割成多个子串。

      --> Java 还提供了 Pattern 和 Matcher 两个类专门用于提供正则表达式支持。

     

 关于预定义字符的记忆:

  • d 是 digit 的意思,代表数字。
  • s 是 space 的意思,代表空白。
  • w 是 word 的意思,代表单词。
  • d、s、w 的大写形式恰好匹配与之相反的字符 

 

 

 

 

 正则表达式还提供了数量标识符,正则表达式支持的数量标识符有如下几种模式。

  • Greedy(贪婪模式):数量表示符默认采用贪婪模式,除非另有表示。贪婪模式的表达式会一直匹配下去,直到无法匹配为止。如果你发现表达式匹配的结果与预期的不符,很有可能是因为你以为表达式只会匹配前面几个字符,而实际上它是贪婪模式,所以会一直匹配下去。
  • Reluctant(勉强模式):用问号后缀(?)表示,它只会匹配最少的字符。也称为最小匹配模式。
  • Possessive(占有模式):用加号后缀(+)表示,目前只有 Java 支持占有模式,通常比较少用。

 

 关于正则的类库包 java.util.regex的使用,可以参考: http://c.biancheng.net/view/5814.html

 

posted @ 2020-10-18 13:18  耗喜天涯  阅读(125)  评论(0编辑  收藏  举报