java 字符串替换指定位置的字符串_Java将指定下标位置多个子字符串替换成指定占位符...

示例效果:

"my email is foo@bar.com and my number is (213)-XXX-XXXX"

替换成

"my email is [EMAIL_ADDRESS] and my number is [PHONE_NUMBER]"

1、指定位置替换代码import java.util.ArrayList;

import java.util.List;

public class Test{

public static void main(String[] args){

String text = "my email is foo@bar.com and my number is (213)-XXX-XXXX";

List findings = new ArrayList<>();

//指定要替换的子字符串的范围,及要替换成的占位符

findings.add(new Token(12, 22, "EMAIL_ADDRESS"));

findings.add(new Token(41, 54, "PHONE_NUMBER"));

System.out.println(replace(text, findings));

}

public static String replace(String text, List findings){

int position = 0;

StringBuilder result = new StringBuilder();

for (Token finding : findings) {

result.append(text.substring(position, finding.start));

result.append('[').append(finding.type).append(']');

position = finding.end + 1;

}

return result.append(text.substring(position)).toString();

}

}

class Token{

int start, end;

String type;

Token(int start, int end, String type) {

this.start = start;

this.end = end;

this.type = type;

}

}

2、字符串替换方法

在Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll()

1) replace() 方法

replace()方法用于将目标字符串中的指定字符(串)替换成新的字符(串)replace(String oldChar, String newChar)

2) replaceFirst() 方法

replaceFirst()方法用于将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串replaceFirst(String regex, String replacement)

3) replaceAll() 方法

replaceAll()方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串replaceAll(String regex, String replacement)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了找出占位符对应的值,我们可以使用正则表达式来匹配字符串a中的占位符,并将占位符替换为对应的值。 下面是一个示例代码,实现了对字符串a和字符串b的比较,并找出占位符对应的值: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String a = "${1}${2}gj${r}"; String b = "djcgjc"; String[] values = {"value1", "value2", "value3"}; // 使用正则表达式匹配占位符 Pattern pattern = Pattern.compile("\\$\\{\\d+\\}"); Matcher matcher = pattern.matcher(a); // 遍历所有匹配到的占位符 int i = 0; while (matcher.find()) { String placeholder = matcher.group(); int index = Integer.parseInt(placeholder.substring(2, placeholder.length() - 1)); if (index < values.length) { // 将占位符替换为对应的值 a = a.replace(placeholder, values[index]); } i++; } // 输出比较结果和占位符对应的值 if (a.equals(b)) { System.out.println("字符串a和字符串b相等"); } else { System.out.println("字符串a和字符串b不相等"); } System.out.println("占位符对应的值为:" + String.join(",", values)); } } ``` 在上述代码中,我们使用了正则表达式 `\$\{\d+\}` 来匹配占位符,其中 `\$\{` 表示匹配字符串 `${`,`\d+` 表示匹配一个或多个数字,`}` 表示匹配字符串 `}`。然后,我们遍历所有匹配到的占位符,并使用 `replace` 方法将占位符替换为对应的值。最后,我们比较字符串a和字符串b的值,并输出占位符对应的值。 注意,上述代码中的 `values` 数组存储了占位符对应的值,其中数组下标从0开始,与占位符中的数字对应,例如占位符 `${1}` 对应的值为 `values[1]`。如果占位符中的数字大于等于 `values` 数组的长度,则该占位符不会被替换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值