package com.joshua317;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
// stringCompare();
// searchLastString();
// System.out.println(removeCharAtt("joshua317", 3));
// stringReplace();
// stringReverse();
// searchString();
// stringSplit();
// stringTokenizerSplit();
// stringToUpperCase();
// stringConcatenate();
}
/**
* 1 字符串比较
* 使用字符串函数 compareTo (string),compareToIgnoreCase(String)及compareTo(object string) 来比较两个字符串,
* 并返回字符串中第一个字母ASCII的差值
*/
public static void stringCompare()
{
String str1 = "Hello World";
String str2 = "hello world";
Object str3 = str1;
System.out.println(str1.compareTo(str2));
//忽略大小写
System.out.println(str1.compareToIgnoreCase(str2));
System.out.println(str1.compareTo(str3.toString()));
}
/**
* 2 查找字符串最后一次出现的位置
* 使用字符串函数 lastIndexOf(String str),返回指定子字符串在此字符串中最右边出现处的索引。
*/
public static void searchLastString()
{
String str = "Hello world ,Hello joshua317";
int lastIndex = str.lastIndexOf("joshua317");
if (lastIndex == - 1) {
System.out.println("没有找到字符串 joshua317");
} else {
System.out.println("joshua317字符串最后出现的位置: "+ lastIndex);
}
lastIndex = str.lastIndexOf("joshua318");
if (lastIndex == - 1) {
System.out.println("没有找到字符串joshua318");
} else {
System.out.println("joshua318字符串最后出现的位置: "+ lastIndex);
}
}
/**
* 3 删除字符串中的一个字符
* 使用字符串函数 substring() 函数来删除字符串中的一个字符
* @param str
* @param pos 从0开始计数
* @return
*/
public static String removeCharAtt(String str, int pos)
{
return str.substring(0, pos) + str.substring(pos + 1);
}
/**
* 4 字符串替换
* 使用字符串函数 replace(char oldChar, char newChar)方法来替换字符串中的字符;
* replaceFirst(String regex, String replacement),用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串;
* replaceAll(String regex, String replacement),用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
*/
public static void stringReplace()
{
String str="Hello joshua317";
System.out.println( str.replace('H','W' ));
System.out.println( str.replaceFirst("He", "Wa"));
System.out.println( str.replaceAll("He", "Ha"));
}
/**
* 5 字符串反转
* 使用StringBuffer类的反转函数 reverse() 将字符串反转
*/
public static void stringReverse()
{
String string = "joshua317";
String reverse = new StringBuffer(string).reverse().toString();
System.out.println("字符串反转前:" + string);
System.out.println("字符串反转后:" + reverse);
}
public static void searchString()
{
String str = "Hello joshua317";
int intIndex = str.indexOf("joshua317");
if(intIndex == - 1){
System.out.println("没有找到字符串joshua317");
}else{
System.out.println("joshua317字符串位置 " + intIndex);
}
}
/**
* 6 字符串分割
* 使用split(string) 方法通过指定分隔符将字符串分割为数组
*/
public static void stringSplit()
{
String str1 = "www-joshua317-com";
String[] temp;
// 指定分割字符
String delimeter = "-";
// 分割字符串
temp = str1.split(delimeter);
// 普通 for 循环
for(int i =0; i < temp.length ; i++){
System.out.println(temp[i]);
}
System.out.println("------for each循环输出的方法-----");
String str2 = "www.joshua317.com";
String[] temp1;
// 指定分割字符, . 号需要转义
String delimeter1 = "\\.";
// 分割字符串
temp1 = str2.split(delimeter1);
for(String x : temp1){
System.out.println(x);
}
}
/**
* 7 使用StringTokenizer对字符串分隔
* 使用 StringTokennizer 设置不同分隔符来分隔字符串,默认的分隔符是:空格、制表符(\t)、换行符(\n)、回车符(\r)。
* 注意:StringTokennizer会以给定分割字符串的每个字符进行分割,而split(string)是以整个字符串进行切割
*/
public static void stringTokenizerSplit()
{
String str = "Hello joshua317, how are you";
StringTokenizer st1 = new StringTokenizer(str);
System.out.println("=========StringTokenizer默认情况============");
while (st1.hasMoreElements()) {
System.out.println(st1.nextElement());
}
StringTokenizer st2 = new StringTokenizer(str, "oh");
System.out.println("=========StringTokenizer指定字符串分割============");
while (st2.hasMoreElements()) {
System.out.println(st2.nextElement());
}
StringTokenizer st3 = new StringTokenizer(str, "oh", true);
System.out.println("=========StringTokenizer,返回分隔符============");
while (st3.hasMoreElements()) {
System.out.println(st3.nextElement());
}
}
/**
* 8 字符串小写转大写
* 使用 String类的toUpperCase()方法将字符串从小写转为大写
*/
public static void stringToUpperCase()
{
String str = "joshua317";
String strUpper = str.toUpperCase();
System.out.println("原始字符串: " + str);
System.out.println("转换为大写: " + strUpper);
}
/**
* 9 字符串连接
* 通过 "+"操作符和StringBuffer.append()方法来连接字符串,并且对比下俩者性能
*/
public static void stringConcatenate()
{
long startTime = System.currentTimeMillis();
for(int i=0; i<5000; i++){
String result = "This is" + "testing the" + "difference"+ "between" + "String"+ "and"+ "StringBuffer";
}
long endTime = System.currentTimeMillis();
System.out.println("字符串连接" + " - 使用 + 操作符 : " + (endTime - startTime)+ " ms");
long startTime1 = System.currentTimeMillis();
for(int i=0; i<5000; i++){
StringBuffer result = new StringBuffer();
result.append("This is");
result.append("testing the");
result.append("difference");
result.append("between");
result.append("String");
result.append("and");
result.append("StringBuffer");
}
long endTime1 = System.currentTimeMillis();
System.out.println("字符串连接" + " - 使用 StringBuffer : " + (endTime1 - startTime1)+ " ms");
}
}
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/225