Java中String一些用法的总结


#String类

构造函数

可能用到的 String constructor

String(String original) 
String(StringBuffer buffer) 
String(StringBuilder builder) 

String(byte[] bytes) 
String(byte[] bytes, Charset charset)//解码!
//对字节数组以charset编码进行解码

String(char[] value) 
String(char[] value, int offset, int count)

String API

下面汇总了一部分最常用的方法

int compareTo(String other)boolean equals(Object other)boolean equalsIgnoreCase(String other)boolean startsWith(String prefix )boolean startsWith(String prefix, int toffset)
toffset - 在哪里开始查找这个字符串。
•boolean endsWith(String suffix )boolean contains(CharSequence s)
//important!!!int indexOf(String substr) 
返回 指定子字符串 第一次出现的 字符串内索引,
位置从索引 0 开始计算
•int indexOf(String substr, int fromlndex)
位置从索引 fromlndex 开始计算 
•int indexOf(int cp) 
返回 码点 cp 第一次出现
•int indexOf(int cp, int fromIndex)int lastIndexOf(String substr) 
•Int lastIndexOf(String substr, int fromlndex)int lastindexOf(int cp)int lastindexOf(int cp, int fromlndex) 
返回匹配的 最后出现的 字符串内索引


•String substring(int beginIndex) 
•String substring(int beginIndex, int endIndex) 
//important!!!

•String toLowerCase( )
•String toUpperCase( )
•String trim( ) 
删除了原始字符串 头部and尾部 的空格
•String concat(String str)
将指定的字符串 连接 到该字符串的末尾
•String replace(char oldChar, char newChar)
//复杂的用Pattern类吧


•String[] split(String regex)
•String[] split(String regex, int limit)
将此字符串拆分为String数组
//important!!!static String join(CharSequence delimiter,
                    CharSequence... elements)static String join(CharSequence delimiter,
   Iterable<? extends CharSequence> elements)
//important!!!static String valueOf(char c)static String valueOf(boolean b)static String valueOf(int i)
...static String valueOf(double d)
(Double.toString方法的另一种表示)

一般方法详解

子串 substring

用途:
用于从长字符串中提取子串

特点:
substring方法的第二个参数是不想复制的第一个位置
substring的工作方式有一个优点:容易计算子串的长度
(例如:字符串 s.substring(a, b) 的长度 为 b-a

API:

public String substring(int beginIndex, int endIndex)

子串开始于指定beginIndex并延伸到字符索引endIndex - 1 。
因此,子串的长度为endIndex-beginIndex 。


public String substring(int beginIndex)

子串以指定索引处的字符开头,并扩展到原本字符串的末尾。


分割 split

用途:
将一个String对象按照 正则表达式表示的分隔符,分割为String数组

特点:
调用形式为 str.join(regex),

API:

String[] split(String regex)
String[] split(String regex, int limit)

// example
String[] strs = values.toString.split("\\s+")
以 任意长空白字符串为 分割符, 将一个String对象分割成String数组

拼接 join

用途:
把多个字符串组合在一起,并用指定的分割符分隔

特点:
静态方法, 调用形式为 String.join( “a delimiter”, seq1, seq2, … , seqN)
或者是: String.join( “a delimiter”, Iterable< T > containter)

API:

public static String join(CharSequence delimiter,
                          CharSequence... elements)

//For example
String message = String.join("-", "Java", "is", "cool");
// message returned is: "Java-is-cool"

返回一个新的字符串,由CharSequence elements的副本组成,
并附有指定的delimiter的delimiter 。


public static String join(CharSequence delimiter,
         Iterable<? extends CharSequence> elements)

//For example
List<String> strings = new LinkedList<>();
strings.add("Java");strings.add("is");
strings.add("cool");
String message = String.join(" ", strings);
//message returned is: "Java is cool"

Set<String> strings = new LinkedHashSet<>();
strings.add("Java"); strings.add("is");
strings.add("very"); strings.add("cool");
String message = String.join("-", strings);
//message returned is: "Java-is-very-cool"

Iterable<? extends CharSequence> elements是String集合


码点与代码单元

  1. 理解 java string (unicode; char) & 码点 & 代码单元
  • 从概念上讲, Java 字符串就是 Unicode 字符序列
  • 从实现上讲,Java 字符串由 char 值序列组成。
    char 数据类型是一个采用 UTF-16 编码,
    表示 Unicode 码点 的**代码单元**。( 很底层! )
  • 大多数常用Unicode字符使用一个代码单元就可以表示,
    而**辅助字符需要一对代码单元**表示
  1. String API 提供了处理 Unicode码点(即字符,不是char!)的方法,及用于处理 代码单元(即char)的方法
    列举如下:
char charAt (int Index) 
返回给定位置的 代码单元。
除非对底层的 代码单元 感兴趣,否则不需要调用这个方法。 

• int codePointAt(int Index) 5.0 
返回从给定位置开始的 码点。 
• int offsetByCodePoints(int startIndex, int cpCount) 5
返回从 startIndex 码点开始,位移 cpCount 后的码点索引。 
•int codePointCount(int startIndex, int endIndex) 5.0 
返回 startIndex 和 endIndex-l 之间的代码点数量。
没有配成对的代用字符将计入代码点。 
//注:上面的 Index 均是 char值

• IntStream codePoints() 8 
将这个字符串的码点作为一个流返回。
调用 toArray 将它们放在一个数组中。

• String(int[] codePoints, int offset, int count) 5
用数组中从 offset 开始的 count 个码点构造一个字符串。
//constructor

工具类

StringBuilder

用途:
每次连接字符串,都会构建一个新的 String 对象,
既耗时,又浪费空间。
使用 StringBuilder类就可以避免这个问题的发生。

示例:
如果需要用许多小段的字符串构建一个字符串,
那么应该按照下列步骤进行。
首先, 构建一个空的字符串构建器

StringBuilder builder = new StringBuilderO; 

当每次 需要添加一部分内容时, 就调用 append 方法。

builder.append(ch);  // appends a single character 
bui1der.append(str); // appends a string 

需要构建字符串时 就凋用 toString 方法,
将可以得到一个String对象,其中包含了builder中的字符序列。

String completedString = builder.toString(); 

SimpleDateFormat

用途:
SimpleDateFormat是一个具体的类,用于格式化和解析日期。
它允许格式化(日期文本),解析(文本日期)和归一化。

API:

•String format(Date date)
//格式化日期
•Date parse(String text) 
从text中解析文本以产生一个 Date 对象
//注意会抛出ParseException异常

示例:

import java.text.SimpleDateFormat;
import java.util.Date;
 
//格式化
public class Main{
    public static void main(String[] args){
        Date date = new Date();
        String strDateFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
        System.out.println(sdf.format(date));
    }
}

output:
	2015-03-27 21:13:23

---------------------------------------------------------
//解析,转换
	SimpleDateFormat sdin = new SimpleDateFormat("d/MMM/yyyy:HH:mm:ss", Locale.ENGLISH);
	SimpleDateFormat sdout = new SimpleDateFormat("yyyy-MM-dd");

	String srcString="30/May/2013:17:38:23"
	Date tmpDate =new Date();

	try {
		tmpDate = sdin.parse(srcString);
	} catch (ParseException e) {
		e.printStackTrace();
	}
	
	String strout = sdout.format(tmpDate);
	System.out.println(strout);

output:
	2013-05-30

参考
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html -java文档
https://www.runoob.com/java/date-time-am-pm.html -runoob

StringTokenizer

用途:
分解字符串的工具类,功能同 split 方法

API:

//constructorStringTokenizer(String str) 
(默认分隔符集,即" \t\n\r\f"(空格字符,制表符,换行字符,回车字符和换页符。 
•StringTokenizer(String str, String delim) 

//methodboolean hasMoreElements()   
•Object nextElement() 
//返回值为 Object 而不是 String ! !!boolean hasMoreTokens() 
•String nextToken() 
//上面两类方法都一样!

-------------------------------------------------
例如:
String str = "test this tool class";
StringTokenizer st = new StringTokenizer(str);

while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
}

output:
test 
this 
tool 
class

Character

用途:
确定单个字符的类别(小写字母,数字等),
并将字符从大写转换为小写(反之亦然)。

API:

static boolean isDigit(char ch)static boolean isLetter(char ch)static boolean isLetterOrDigit(char ch)static boolean isLowerCase(char ch)static boolean isUpperCase(char ch)static boolean isWhitespace(char ch)static char toLowerCase(char ch)static char toUpperCase(char ch)  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值