java 怎样交换两个字符串_在Java字符串中交换两个子字符串

尝试这个:

source=source.replace(str1, str2);

// handle things like "f(f(x))*g(g(x))"

source=source.replaceFirst(Pattern.quote?(str2), Matcher.quoteReplacement(str1));

请参阅Pattern.quote here的文档.

请参阅Matcher.quoteReplacement here的文档.

警告:

您选择的这种方法有两个大假设!

>假设1:str2必须出现在源代码中,位于str1之前,并且

>假设2:str2只能在源字符串中出现一次

>此外:如果其中一个字符串是另一个字符串的子字符串,则会得到意外的结果

例如:

String longer = str1;

String shorter = str2;

if(str2.length() > str1.length()) {

longer = str2;

shorter = str1;

}

Pattern p = Pattern.compile(Pattern.quote(longer) + "|" + Pattern.quote(shorter));

Matcher m = p.matcher(source);

StringBuffer sb = new StringBuffer();

while (m.find()) {

String replacement = str1;

if(m.group(0).equals(str1)) {

replacement = str2;

}

m.appendReplacement(sb, Matcher.quoteReplacement(replacement));

}

m.appendTail(sb);

System.out.println(sb.toString());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值