字符串常用操作(截取,分割,替换,拼接,检索)

本文将从字符串的截取,分割,替换,拼接和检索五个方面对比Java和JavaScript中字符串的常用操作。

字符串截取

  • 1、str.substring(startIndex,endIndex):在Java和JS中的使用相同, 不接受负的参数
String str = "http://localhost:9000/dd50d617-78ff-4acc-b185-892c43f98bec.png";

System.out.println("截取下标在0~21之间的字符,不包括下标为21的(共21个字符):"+str.substring(0,21)); //http://localhost:9000
System.out.println("截取下标为21之后的所有字符,包括下标为21的字符:"+str.substring(21)); // /dd50d617-78ff-4acc-b185-892c43f98bec.png
let str = "http://localhost:9000/dd50d617-78ff-4acc-b185-892c43f98bec.png"
console.log("截取下标在0~21之间的字符,不包括下标为21的(共21个字符):",str.substring(0,21))
console.log("截取下标为21之后的所有字符,包括下标为21的字符:",str.substring(21))
  • 2、str.substr(startIndex,length):参数为开始位置下标和要截取长度,startIndex 可为负数,length 可选,JS中的方法,Java中无该方法,不建议使用;
console.log(str.substr("截取下标为3之后的所有字符,包括下标为3的字符:",3))
console.log(str.substr("截取下标为3之后的5个字符,包括下标为3的字符:",3,5)) // p://l
console.log(str.substr("截取倒数三个字符:",-3)) // png
  • 3、str.slice(startIndex,endIndex):和 substring 用法一样,但 slice 两个参数都可以是负数;同样是JS中的方法,Java中无该方法;特点:“包前不包后”,左开区间【);方向只能向右,即endIndex必须大于startIndex;
console.log("截取下标在0~21之间的字符,不包括下标为21的(共21个字符):",str.slice(0,21))
console.log("截取下标为21之后的所有字符,包括下标为21的字符:",str.slice(21))
console.log("截取下标在0~倒数第二个之间的所有字符,不包括倒数第二个字符:",str.slice(0,-2))//输出:http://localhost:9000/dd50d617-78ff-4acc-b185-892c43f98bec.p

console.log("截取下标在倒数第五个~倒数第二个之间的所有字符,不包括倒数第二个字符:",str.slice(-5,-2))//c.p

字符串分割

  • split() 方法用于把一个字符串分割成一个字符串数组。在Java和JS中的用法相同
String str = "Hello Spring Boot,Spring Cloud,Spring Data";
// 以英文,逗号分割字符串
String[] array = str.split(",");
System.out.println(Arrays.toString(array));//[Hello Spring Boot, Spring Cloud, Spring Data]

// 以英文空格分割字符串
String[] array2 = str.split(" ");
for (String item : array) {
    System.out.println(item);
}
//输出:
Hello
Spring
Boot,Spring
Cloud,Spring
Data

字符串替换

  • replace(target,newstring)方法将一个字符串中的子串,替换为新的字符串,或替换一个与正则表达式匹配的子串,在Java和JS中的用法相同
String str = "http://localhost:9000/dd50d617-78ff-4acc-b185-892c43f98bec.png";
String replace = str.replace("http", "https");
System.out.println(replace);//https://localhost:9000/dd50d617-78ff-4acc-b185-892c43f98bec.png
// 正则
[a-z] //匹配所有的小写字母 
[A-Z] //匹配所有的大写字母 
[a-zA-Z] //匹配所有的字母 
[0-9] //匹配所有的数字 
[0-9\.\-] //匹配所有的数字,句号和减号 
[ \f\r\t\n] //匹配所有的白字符

[^a-z]  // 除了小写字母以外的所有字符 
[^\\\/\^]  // 除了(\)(/)(^)之外的所有字符 
[^\"\']  // 除了双引号(")和单引号(')之外的所有字符
                 
手机号:^1[34578]\d{9}$
邮箱:^\w+@\w+(\.\w+)+$

字符串拼接

参考w3school: https://www.w3school.com.cn/jsref/jsref_join.asp

1、join() 方法JS中的join方法将数组中的所有元素拼接成一个字符串。Java中的Join方法用来处理多线程问题;

  • 语法:arrayObject.join(separator):separator指定要使用的分隔符,separator可选。如果省略该参数,则默认使用逗号作为分隔符。

  • 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。

let  arr = [ "a", "b", "c", "1", "2" ]
console.log(arr.join()) //a,b,c,1,2  默认以逗号拼接每个数组元素
console.log(arr.join("-")) //a-b-c-1-2 以-号拼接每个元素
console.log(arr.join(""))//abc12  空拼接符

2、在JS和Java中都有concat() 方法,并且他们的用法不相同。

在JS中,concat() 方法用于拼接两个或多个数组。

  • 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
  • 语法:arrayObject.concat(arrayX,arrayX,…,arrayX),arrayX必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
let arr = [1,2,3]
console.log(arr.concat(4,"遇见"))//[1,2,3,4,"遇见"] 将4和"遇见"拼接到数组末尾
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
//将arr2数组拼接到arr数组后
console.log(arr.concat(arr2)) // [George,John,Thomas,James,Adrew,Martin]

参考w3school: https://www.w3school.com.cn/js/jsref_concat_array.asp


在Java中,concat()用于拼接两个字符串;与+号的区别主要是:+号可以拼接字符串或者数字及其他基本类型数据,而concat只能拼接字符串。

String s1 = "遇见";
String s2 = "0和1";
String concat = s1.concat(s2);
System.out.println(concat);//遇见0和1

字符串检索

1、match() 方法可在字符串内检索指定的值,或匹配到一个或多个正则表达式。返回一个存放匹配结果的数组。

let str="Hello 0和1!"
console.log(str.match("Hello"))// 检索字符串中是否包含Hello
console.log(str.match(/\d+/g)) // ["0", "1"] 匹配正则(返回字符串中的所有数字) 

在Java中没有match() 方法,但Java中有 matches() 方法和match()类似

  • 语法:public boolean matches(String regex),在字符串匹配给定的正则表达式时,返回 true。
// 判断字符串 str 是否符合邮箱格式
String str = "lingstudy@qq.com" ;

if (!str.matches("^\\w+@\\w+(\\.\\w+)+$")){
    return false; // 邮箱格式不正确
}
return true;

2、indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置(下标)。如果没有找到匹配的字符串则返回 -1。indexOf()在 Java和JS中的用法相同。

语法:string.indexOf(searchvalue,start),start参数可选。

var str="Hello 和 0和1!"
console.log(str.indexOf("和")) //返回 和 第一次出现的位置 6
console.log(str.indexOf("和",7))//在字符串第7个位置开始查找字符 "和" 第一次出现的位置: 9
String str = "遇见 和 0和1";
System.out.println(str.indexOf("我"));// -1
System.out.println(str.indexOf("和"));// 3
System.out.println(str.indexOf("和",4));// 6

删除头尾空白符

  • trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符,在Java和JS中的用法相同。
String str = " \thttp://localh8bec.png\n ";
System.out.println(str.trim()); //http://localh8bec.png
let str = " \thttp://localh8bec.png\n "
console.log(str.trim())
好的,以下是代码实现: ```python # 输入一个字符串和一个整数 str_input = input("请输入一个字符串:") int_input = int(input("请输入一个整数:")) # 拼接操作 str_concat = str_input + str(int_input) # 计算长度 str_len = len(str_concat) # 截取操作 str_slice = str_concat[2:6] # 分割操作 str_split = str_concat.split("3") # 合并操作 str_join = "-".join(str_split) # 检索操作 str_find = str_concat.find("23") # 大小写转换操作 str_upper = str_concat.upper() str_lower = str_concat.lower() # 格式化字符串输出 print("拼接操作结果:{}".format(str_concat)) print("长度计算结果:{}".format(str_len)) print("截取操作结果:{}".format(str_slice)) print("分割操作结果:{}".format(str_split)) print("合并操作结果:{}".format(str_join)) print("检索操作结果:{}".format(str_find)) print("大写转换操作结果:{}".format(str_upper)) print("小写转换操作结果:{}".format(str_lower)) # 编码输出 str_gbk = str_concat.encode('gbk') str_utf8 = str_concat.encode('utf-8') print("GBK编码输出:{}".format(str_gbk)) print("UTF-8编码输出:{}".format(str_utf8)) ``` 测试样例: ``` 请输入一个字符串:abcd 请输入一个整数:23 拼接操作结果:abcd23 长度计算结果:6 截取操作结果:cd23 分割操作结果:['abc', '23'] 合并操作结果:abc-23 检索操作结果:2 大写转换操作结果:ABCD23 小写转换操作结果:abcd23 GBK编码输出:b'abcd23' UTF-8编码输出:b'abcd23' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值