我有一个字符串,我必须用子字符串替换它。例如,“服务”是这个词。我有一个子字符串为“ servi”。现在,我需要检查“服务”是否具有“服务”。如果是,那么我需要将其替换为“维修”。当我尝试更换时,它将显示为“ servi”。但是预期的输出是“服务”,您能帮我解决这个问题吗?请在下面找到代码。

String stringValue = "Servicing";
if (stringValue != null && stringValue != "") {
    i = stringValue.toLowerCase().indexOf("servi", i+1);
    if(i>=0){
        newData = stringValue .replaceAll("(?i)"+"servi", "<mark>"+"servi"+"</mark>");
        System.out.println(newData); // Case sensitive should remain same as String. Not as substring.
        i = -1;
        }
    }

最佳答案



String stringValue = "Servicing";
if (stringValue != null && !stringValue.isEmpty()) {
     String newData = stringValue.replaceAll("(?i)servi", "<mark>$0</mark>");
     System.out.println(newData);
}


请参见Java demo

细节:


(?i)-不区分大小写的内联修饰符
servi-文字字符序列
$0-对整个匹配值的反向引用。确保您将servi插入匹配的大小写(无需像替换原始代码那样在替换内容中对其进行硬编码)。

10-08 19:30