如何提取字符串的特定部分并替换为相同的提取值但在不同情况下

我的输入t%60hiag%2Fra%2Cjan

我希望将其转换为t%60hiag%2fra%2cjan

我想用 %2f 替换 %2F。即 0-9 之间的任何数字后跟来自 AF 的大写字母应转换为小写字母。


我能够提取并替换为通用字符串。但我需要帮助将提取的字符串替换为小写。


  private static String urlEncodeLowerCase(String stringInput)

  {

    stringInput = stringInput.replaceAll("%[0-9]{1}[A-F]{1}", "T");  

    return stringInput;

  }

上面的代码将提取并用“T”替换提取的字符串,但我想要类似的东西


stringInput = stringInput.replaceAll("%[0-9]{1}[A-F]{1}", "%[0-9]{1}[A-Z]{1}".toLowerCase);  

上面的代码不起作用。这只是为了让您了解我的要求。


繁花不似锦
浏览 149回答 3
3回答

幕布斯6054654

您应该使用正则表达式来匹配要更改的字符串部分。之后,您应该遍历所有匹配项并使用转换匹配部分重建字符串,并且不更改所有其他部分。看看 Pattern、Matcher 和 StringBuilder 类是如何工作的。

素胚勾勒不出你

您可以使用Matcher#appendReplacement. 根据Java Matcher类文档:的appendReplacement和appendTail方法可以串联使用,以便收集的结果到一个现有的字符串缓冲区请参阅此 Java 演示:String s = "Some Text %0A";Pattern p = Pattern.compile("%[0-9][A-Z]");StringBuffer result = new StringBuffer();Matcher m = p.matcher(s);while (m.find()) {    m.appendReplacement(result, m.group().toLowerCase());}m.appendTail(result);System.out.println(result.toString());// => Some Text %0a如果要确保大写字母后有单词边界,请使用"%[0-9][A-Z]\\b"模式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java