个人总结的Java自学各个方法总和 ——《字符串篇》

前提提要:代码块中均为伪代码,不是正式规格代码,只是为了方便大家观看方便易解,有错误请指正 

【String的方法】

1、获取长度

String str = "sdfkhkbsdk";
str.length();  ————> 10

2、获取字符串各个索引位置的‘字符’

String str = "sdfkhkbsdk";
str.charAt(0);  ——>  's'

3、返回指定字符在此字符串中第一次出现处的索引(如果没有返回-1);(数字是ASCII码中对应的字符数值)

String str ="abcdefg";
System.out.println( str.indexOf(97) ); ——> 这里97指'a'的ASCII码值,结果是0
System.out.println( str.indexOf("b") ); ——> 结果是1


(比较少用,但是用到会很方便:【.lastIndexOf(字符串)】方法,查找对应字符最后在字符串中出现的索引位置,如果没有则返回-1

 例子:System.out.println(str.indexOf("e")); ——> 4

4、获得原字符串的子字符串

(1)从指定位置开始截取字符串,默认到末尾;
 
String str ="abcdefg";
System.out.println( str.substring(2) ); ——> "cdefg"

(2)指定区间的子字符串
String str ="abcdefg";
System.out.println( str.substring(2,5)); ——> "cde"
注意!substring(2,5)这里的不包括到该索引5所在的字符'f',所以要获得'f'位置的数就要(2,5+1)
 

5、比较字符串
(1)string1 == string2
这种比较的是字符串的【值或地址】
当是【基本数据类型】时就是比较【值】,比如:

String s1 = "123"; String s2 = "123"; s1 == s2 ——> true

当是【引用数据类型】时就是比较【地址】,比如:

String s1 = "123";
String s2 = new String("123");//这里说s2是new出来的,是引用数据类型
String s3 = String.valueOf(123);//用了String的value方法也是引用数据类型

System.out.print(s1==s2); ——> false
System.out.print(s1==s3); ——> false

(2)string1.equals(string2)【稳!】
String s1 = "123";
String s2 = new String("123");
s1.equals(s2);  ——> true

(3)equalslgnoreCase()
方法与equals()方法完全相同,唯一不同是equalslgnoreCase()方法比较时不区分大小写
String str1="abc";
String str2="ABC";
System.out.println(str1.equalslgnoreCase(str2));  ——> true

(4)”startsWith单词“ 和 ”endsWith单词“
判断该字符串的开头或结尾是不是指定的单词
【第一种】:注意不需要.或者(),直接跟单词,而且只能是标准单词,比如这样不行:(startsWithHell × / startsWithHello √)
String str = "Hello70187开脚本创建 吉安市 djshbcsk 的手机存储卡World";
boolean startsWithHello = str.startsWithHello; ——> true
boolean endsWithWorld = str.endsWithWorld; ——> true
String str = "Heloo Wold";
boolean startsWithHello = str.startsWith("Hello"); ——> false
boolean endsWithWorld = str.endsWith("World"); ——> false

【第二种】:可以是不标准单词,但需要带()
String str = "Hello70187开脚本创建 吉安市 djshbcsk 的手机存储卡World";
boolean startsWithHello = str.startsWith("Hel"); ——> true
boolean endsWithWorld = str.endsWith("ld"); ——> true

(5)非常重要!!!匹配【正则表达式】
String.matches()

例子:

String str = "123456";
boolean isNumeric = str.matches("\\d+"); ——> true


(补充正则表达式)
 

       //    1、^表达字符串开头                                        拓:1、匹配中文字符的正则表达式: [\u4e00-\u9fa5]
        //       如果在方括号里[^],表示“除了...”                                2、匹配空行的正则表达式:\n[\s| ]*\r
        //    2、[]表示范围,仅占一个字符                                    3、匹配HTML标记的正则表达式:/<(.)>.</\1>|<(.*) />/
        //    3、[1-5]则是表示可以是数字1-5任意一个                            4、匹配首尾空格的正则表达式:(^\s*)|(\s*$)
        //    4、\d表示数字(等于[0-9])                                    5、匹配IP地址的正则表达式:/(\d+).(\d+).(\d+).(\d+)/g //
        //       \w表示英文字母、数字、_下划线(等于[a-z0-9A-Z_])                        6、匹配Email地址的正则表达式:\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
        //       \s表示空白字符(空格、Tab键、换行符)                            7、匹配网址URL的正则表达式:http://(/[\w-]+.)+[\w-]+(/[\w- ./?%&=]*)?
        //       \D是\d相反:除了数字                                    8、sql语句:^(select|drop|delete|create|update|insert).*$
        //       \W是\w相反:即空白字符                                    9、正浮点数:^((0-9)+.[0-9]*[1-9][0-9])|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9][1-9][0-9]*))$
        //       \S是\s相反: 即有效字符                                       10、非正浮点数:^((-\d+.\d+)?)|(0+(.0+)?))$
        //    5、【非常重要!】java不解析一个\的转义字符
        //        必须要两个\\!!!!比如:\\d、\\.、\\s
        //        反正所有带\的转义字符都必须两个\\
        //    6、【也重要!】“.”不带转义字符时代表“任意字符”
        //        即可以是英文、中文、空格、乱码、狗屎...任何东西                    【注意转义字符是反斜杠”\\“而不是正斜杠”//“!!!!!】
        //        “//.”才是小数点!!!                                "()"、"[]"、"{}"、"."......这些转义字符在正则表达式里有很强的语义作用
        //    7、分析正则表达式思路,分块来写:                            必须要用反斜杠"\\",而且!!!【多个分隔符一定要带[],因为不带的话计算机会认为“[\\(\\)\\[\\]”这么一大串是“一个”分隔符】
        //        【1】首先得有选项,而且是在1-5之间,所以^[1-5]                    例子:
        //        【2】然后是“:”,直接写就行                                要匹配分割下面这个字符串:“我(张三)是[简直是]傻逼{小可爱}”
        //        【3】难点来了,因为根据选项[1-5]有三种数据输入                        String str = "我(张三)是[简直是]傻逼{小可爱}";
        //            要么输入一对坐标,要么两对,要么三对                            String[] s = str.split("[\\(\\)\\[\\]\\{\\}]");
        //            但至少得有一对坐标,那就可以先设置一对坐标判断输入格式
        //            然后判断 (一对坐标)+ "至少一个或多个或{2,4}"                        for(String i:s){
        //        【4】有无小数就(\\.\\d+)? "有小数点后面就得有数字,然后小数点跟后面数字可有可无"                System.out.printt(i+" ");  ——>  我 张三 是 简直是 傻逼 小可爱 
        //        [-+]?\\d+(\\.\\d+)?  代表一个数字(可带正负号、小数)                       }
        //        [-+]?\\d+(\\.\\d+)?\\s?  的“\\s?”代表每对坐标之间间隔的空格,一对坐标就不用空格
        //        ([-+]?\\d+(\\.\\d+)?,[-+]?\\d+(\\.\\d+)?\\s?)  代表一对坐标


还有!!!!“$数字”是匹配正则表达式里()分组的第几个,比如例子:
       

String s="abacar";
s = s.replaceAll("a(\\w)a(\\w)a(\\w)",".$1.$2.$3");  ——>  这里$1对应第一个a(\\w)的(\\w),也就是ab的b;$2对应第二个a(\\w)的(\\w),也就是ac的c;$3对应第三个a(\\w)的(\\w),也就是ar的r;然后替换成“.”
System.out.println(s);  ————>  .b.c.r

(6)根据每个字母进行ASCII码值加减,返回结果,其实没啥用,少用
String str = "abcde";
String str1 = "abcdef";
String str2 = "abcde";
int isSame1 = str.compareTo(str1); ——> -1
int isSame2 = str.compareTo(str2); ——> 0
6、判断字符串是否【包含子字符串】,这样就不需要再拆分字符串然后又比较啥的那么麻烦
String.contains("字符串");
例子:
String str ="abcdefg";
System.out.println( str.contains("ab") ); ——> true

7、判断字符串是否为空
String.isEmpty();
例子:
String str ="abcdefg";
System.out.println( str.isEmpty() ); ——> false

【常用的字符串与其他类型转换功能】
----------------------------------------------------------------------------------
8、【字符串】转【数字】
String str = "123";
int num1 = Integer.parseInt(str);
double num2 = Interge.parseDouble(str);
float num3 = Interge.parseFloat(str);
long num4 = Interge.parseLong(str);
short num5 = Interge.parseShort(str);

9、【数字】转【字符串】
int num = 123;
(1)String str = String.valueOf(num);    <——【推荐】
(2)String str = Interge.toString(num);
(3)String str = String.format("%.2f",num); ——>123.00,类似c语言输出一样可以控制格式


----------------------------------------------------------------------------------

共性:其他基本数据类型转为【字符串】时都是: String.valueOf(xxx);    
          但是StringBulider这种对象或引用数据类型变回String是.toString()


-----------------------------------------------------------------------------------
10、【字符串】转【字符数组】
String str = "123";
char[] fu = str.toCharArray();

11、【字符数组】转【字符串】
char[] fu = {'1','2','3'};
String str = String.valueOf(str);

-----------------------------------------------------------------------------------


【String内部变化的一些方法】
12、【分割字符串】
String str = "Hello World matherfucker";
String[] s = str.split(" ");
for(String i:s){
    System.out.println(i);  ————>  Hello  World matherfucker
} 


【注意!!!!!】  

1、.split()返回的是【字符串数组】
2、括号里填“正则表达式”,然后多个“分隔符”不需要空格隔开
3、多个分隔符一定要带[],因为不带的话计算机会认为“[\\(\\)\\[\\]”这么一大串是“一个”分隔符,而[]        则表示里面的分隔符的【其中任意一个】
 4、另外("...",参数)除了填分隔符,还可以填一个参数控制【要分割几份】,比如:

String str = "Hello World matherfucker";
String[] s = str.split(" ",2);  ————>  分割成"Hello"和"World matherfucker"

13、【分割完就该组装了,组装字符串】
String s1 = "mather";
String s2 = "fucker";

(1) 方法一:

String S = s1.concat(" ").concat(s2);  ————>  mather fucker

(2) 方法二:

String S = s1 + " " + s2;  ————>  mather fucker
                                        【拓字符串新形式:】
(3) 方法三:【StringBuilder方法】                                        
StringBuilder S = new StringBuilder();
S.append("mather");
S.append(" ");
S.append("fucker");
String s = S.toString();
System.out.println(s);  ————>  mather fucker
 (4) 方法四:【StringJoiner方法】                                    
StringJoiner S = new StringJoiner(" ");
S.add("mather");
S.add("fucker");
String s = S.toString();
System.out.println(s);  ————>  mather fucker

另外,StringJoiner的()里是一个参数时,这个参数代表各个字符串的【中间分隔符】,再加【两个参数】可以代表整个字符串的【开头结尾】
                                              

StringJoiner S = new StringJoiner(",","[","]");
S.add("mather");
S.add("fucker");
String s = S.toString();
System.out.println(s);  ————>  [mather,fucker]
(5) 方法五:【ArrayList<>方法】
ArrayList<String> S = new ArrayList<>();
S.add("mather");
S.add("fucker");
String s = S.toString();
System.out.println(s);  ——————>  [mather,fucker],因为ArrayList底层做了处理,会用“[]”包裹数据并用“,”分割数据
for(String str : s){
    System.out.print(str + " ");  ——————>  mather fucker,直接输出成员就能避免输出多于符号
}
另外,ArrayList的成员只能是【引用数据类型】或【包装类】
String就是引用数据类型,而所有数字、boolean、byte这些基本数据类型都是【包装类】                                      
ArrayList<Integer> S = new ArrayList<>();
S.add(1);
S.add(2);
for(int i : s){
    System.out.print(i + " ");  ——————>  1 2
}

14、组装拼接完,就来个大改造,更换内部字符
String str = "HelloFuckingWorld";
str = str.replace("Fucking","");  ——————>  HelloWorld
还有.replaceALL()可以彻底大改样,整个字符串改了,而且可以按照正则表达式来改
例子:
String s="abacar";
s = s.replaceAll("a(\\w)a(\\w)a(\\w)",".$1.$2.$3");  ——>  这里$1对应第一个a(\\w)的(\\w),也就是ab的b;$2对应第二个a(\\w)的(\\w),也就是ac的c;$3对应第三个a(\\w)的(\\w),也就是ar的r;然后替换成“.”
System.out.println(s);  ————>  .b.c.r

15、没啥用的几个方法:【.trim()】【.toLowerCase()】【.toUpperCase()】
分别对应:【去除两边空格】【变小写字母】【变大写字母】,没啥用不叙述,有脑子的就会用了

=========================================================================

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到字符串处理时,以下是一些 Python 中与字符串相关的常见知识点: 1. 字符串创建:在 Python 中,您可以使用单引号或双引号来创建字符串。例如:`str1 = 'Hello'` 或 `str2 = "World"` 2. 字符串连接:您可以使用 `+` 运算符将两个字符串连接起来。例如:`str3 = str1 + str2` 3. 字符串长度:通过使用 `len()` 函数,您可以获取字符串的长度。例如:`length = len(str1)` 4. 字符串索引和切片:可以使用索引和切片操作来访问字符串中的单个字符或子字符串。例如:`char = str1[0]` 或 `substring = str1[1:4]` 5. 字符串常用方法: - `upper()`:将字符串转换为大写。 - `lower()`:将字符串转换为小写。 - `strip()`:去除字符串开头和结尾的空格。 - `replace(old, new)`:将字符串中的旧字符或子字符串替换为新字符或子字符串。 - `split(delimiter)`:将字符串拆分为子字符串列表,根据指定的分隔符进行拆分。 - `join(iterable)`:将可迭代对象中的元素连接为一个字符串,使用指定的字符串作为连接符。 - `startswith(prefix)` 和 `endswith(suffix)`:检查字符串是否以指定的前缀或后缀开头/结尾。 6. 字符串格式化:使用 `%` 运算符或 `format()` 方法将变量的值插入到字符串中的占位符位置。例如: ```python name = "Alice" age = 25 message = "My name is %s and I am %d years old." % (name, age) ``` 或 ```python name = "Alice" age = 25 message = "My name is {} and I am {} years old.".format(name, age) ``` 7. 转义字符:在字符串中使用反斜杠 `\` 来表示特殊字符,例如换行符 `\n`、制表符 `\t` 等。 8. 字符串比较:可以使用比较运算符(如 `==`、`!=`、`>`、`<` 等)对字符串进行比较操作。 9. 字符串的不可变性:在 Python 中,字符串是不可变的,这意味着一旦创建了一个字符串,就无法更改其内容。 10. 字符串编码和解码:Python 默认使用 Unicode 字符编码。可以使用 `encode()` 方法字符串编码为字节序列,或使用 `decode()` 方法将字节序列解码为字符串。 这只是一些与字符串处理相关的基本知识点。当您深入学习 Python 字符串时,还会遇到更多高级的字符串操作和方法。建议您参考 Python 官方文档或其他教程来深入学习有关字符串的更多内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值