package myAllTest.TString;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
public class TString {
public static void main(String[] args) {
// TODO Auto-generated method stub
TString ts=new TString();
ts.Ts_Charset();
ts.Ts_charAt();
ts.Ts_compareTo();
ts.Ts_concat();
ts.Ts_contains_endsWith_equalsIgnoreCase();
ts.Ts_format();
ts.Ts_indexOf_lastIndexOf_lastIndexOf();
ts.Ts_split_startsWith();
}
/**
* String类是我们最常使用的一个字符串类
* 此类包括方法检测单个字符的序列,用于比较字符串、 搜索字符串、 提取子字符串,
* 并使用的所有字符创建字符串的副本转换为大写或小写。大小写映射基于指定的字符类的 Unicode 标准版本。String
为字符串串联运算符 (+),和其他对象到字符串的转换,Java 语言提供特别支持。通过执行字符串串联 (或) 类和它的方法。
字符串转换是通过方法执行,由定义,由 Java 中的所有类继承。字符串串联和转换的更多信息,
*
*
* 在这里我总结了几个比较常用,也是初学者比较不熟悉的几个方法,提出来做个示例,帮助大家更好的理解
*
* 在下面的举例中,我会用不同的字符串创建方式来创建
*/
/*
* 用String的一个通过指定编码方式来解码入参的Byte[]
*/
public void Ts_Charset()
{
//Unicode、ASCII、GBK、GB2312、UTF-8 这是我们常见的编码格式当然还有很多,这里就列举了这些
//在这里我列举了中文和英文,我们来比较一下是否进行了编码处理
String str0="abcd";
String str="你好";
String str2=null;
try {
str2=new String(str.getBytes(),"ASCII");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str2);
/*
* 当我们处理的时候,可见英文当然都是支持的,所以正常输出adbc,而我们的中文则出现的是四个问号
*/
}
/*
* charAt 返回指定索引处的 char 值。
* codePointAt 返回指定索引处的字符(Unicode 代码点)。
*/
public void Ts_charAt()
{
String str=new String("abcd");
char str1=str.charAt(2);//注意此处返回的是一个字符,而不是一个字符串,我以前写的时候,总是搞错用String来接收
int i=str.codePointAt(2);
System.out.println(str1);
System.out.println(i);
/*
* 结果:c
* 99
*/
}
/*
* compareTo 按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。
*
*/
public void Ts_compareTo()
{
byte[] byt=new byte[]{'a','b','c','d'};
String str=new String(byt);
byte[] byt1=new byte[]{'a','c','b','d'};
String str1=new String(byt1);
byte[] byt2=new byte[]{'a','d','b','c'};
String str2=new String(byt1);
int result=str.compareTo(str1);//结果:str<str1
int result2=str1.compareTo(str2);//结果:str=str1
System.out.println(result);
System.out.println(result2);
}
/*
* concat 将指定字符串连接到此字符串的结尾。这个应用的地方还是很多的,比较重要
*
*/
public void Ts_concat()
{
StringBuffer sb=new StringBuffer("abcd");
String str=new String(sb);
StringBuffer sb1=new StringBuffer("efgh");
String str1=new String(sb1);
String str3=str.concat(str1);
System.out.println(str3);
/*
* 结果:abcdefgh
*/
}
/**
* contains 当且仅当此字符串包含指定的 char 值序列时,返回 true。
* endsWith 测试此字符串是否以指定的后缀结束。
* equalsIgnoreCase 将此 String 与另一个 String 比较,不考虑大小写。
*/
public void Ts_contains_endsWith_equalsIgnoreCase()
{
StringBuilder sb=new StringBuilder("abcd");
String str=new String(sb);
String str2=new String("ABCD");
boolean br=str.contains("a");
boolean br2=str.endsWith("d");
boolean br3=str.equalsIgnoreCase(str2);
System.out.println(br);
System.out.println(br2);
System.out.println(br3);
/*
* 结果:true true true
*/
}
/*
* format 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
* 这个功能比较有趣,我觉得这个和C语言在输出字符串时都会用%S,%d来表示字符串和数字的输出等,这里也一样,有着相似之处
* 我相信,学过C语言的在这里就会很快掌握并理解,下面我列举了几个常用的
* %s 字符串类型
* %c 字符类型
* %b 布尔类型
* %d 整数类型
* %x 十六进制类型
* %% 百分比
* %e 指数类型
* %a 十六进制浮点类型 还有一些,我就不列举了,我有时也会翻翻文档,多了,
* 时间长了也可能会忘记不住,这是很正常的事,不过常用的这些我们还是一点盐牢记
*/
public void Ts_format()
{
String str=new String("world");
String str2=String.format("hello!%s", str);//注意这是一个静态方法哦
//这个方法还有一个本地化,一般我们使用日期的时候经常用到
String str3=String.format("%1$tY/%1$tm/%1$te",new Date());
String str4=String.format("%tF",new Date());
String str5=String.format("%tT AND %tR",new Date(),new Date());
System.out.println(str2);//结果:hello!world
System.out.println(str3);//2017/07/9
System.out.println(str4);//2017-07-09
System.out.println(str5);//22:23:38 AND 22:23
}
/*
* indexOf 返回指定字符在此字符串中第一次出现处的索引。
* lastIndexOf 返回指定字符在此字符串中最后一次出现处的索引。
* matches 告知此字符串是否匹配给定的正则表达式。
*/
public void Ts_indexOf_lastIndexOf_lastIndexOf()
{
String str=new String("world OMG!");
int index1=str.indexOf('w');//注意此处'w'字符,实际上是一个int unicode码值
int index2=str.lastIndexOf('O');
System.out.println(index1);//结果:0
System.out.println(index2);//结果:6
String match="^w.*\\s[A-Z]*!$";
boolean result=str.matches(match);
System.out.println(result);//结果:true
}
/*
* split 根据给定正则表达式的匹配拆分此字符串。
* startsWith 测试此字符串是否以指定的前缀开始。
*/
public void Ts_split_startsWith()
{
String str=new String("wo:rld:OM:G!:haha");
String[] str1=str.split(":",2);//方便记忆,这个3参数,实际上是将这个字符串分割成几份
boolean bol=str.startsWith("w");
System.out.println(Arrays.toString(str1));//[wo, rld:OM:G!:haha]
System.out.println(bol);//true
}
}
System.out.println(br2);
System.out.println(br3);
/*
* 结果:true true true
*/
}
/*
* format 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
* 这个功能比较有趣,我觉得这个和C语言在输出字符串时都会用%S,%d来表示字符串和数字的输出等,这里也一样,有着相似之处
* 我相信,学过C语言的在这里就会很快掌握并理解,下面我列举了几个常用的
* %s 字符串类型
* %c 字符类型
* %b 布尔类型
* %d 整数类型
* %x 十六进制类型
* %% 百分比
* %e 指数类型
* %a 十六进制浮点类型 还有一些,我就不列举了,我有时也会翻翻文档,多了,
* 时间长了也可能会忘记不住,这是很正常的事,不过常用的这些我们还是一点盐牢记
*/
public void Ts_format()
{
String str=new String("world");
String str2=String.format("hello!%s", str);//注意这是一个静态方法哦
//这个方法还有一个本地化,一般我们使用日期的时候经常用到
String str3=String.format("%1$tY/%1$tm/%1$te",new Date());
String str4=String.format("%tF",new Date());
String str5=String.format("%tT AND %tR",new Date(),new Date());
System.out.println(str2);//结果:hello!world
System.out.println(str3);//2017/07/9
System.out.println(str4);//2017-07-09
System.out.println(str5);//22:23:38 AND 22:23
}
/*
* indexOf 返回指定字符在此字符串中第一次出现处的索引。
* lastIndexOf 返回指定字符在此字符串中最后一次出现处的索引。
* matches 告知此字符串是否匹配给定的正则表达式。
*/
public void Ts_indexOf_lastIndexOf_lastIndexOf()
{
String str=new String("world OMG!");
int index1=str.indexOf('w');//注意此处'w'字符,实际上是一个int unicode码值
int index2=str.lastIndexOf('O');
System.out.println(index1);//结果:0
System.out.println(index2);//结果:6
String match="^w.*\\s[A-Z]*!$";
boolean result=str.matches(match);
System.out.println(result);//结果:true
}
/*
* split 根据给定正则表达式的匹配拆分此字符串。
* startsWith 测试此字符串是否以指定的前缀开始。
*/
public void Ts_split_startsWith()
{
String str=new String("wo:rld:OM:G!:haha");
String[] str1=str.split(":",2);//方便记忆,这个3参数,实际上是将这个字符串分割成几份
boolean bol=str.startsWith("w");
System.out.println(Arrays.toString(str1));//[wo, rld:OM:G!:haha]
System.out.println(bol);//true
}
}