正则表达式替换字符串中的字符

时间:2017-06-13 15:31:18

标签: java regex scala

我有一个像val str = "luckycore.util.BigNum("0")"这样的字符串,字符串的前五个字符,例如lucky是动态的,可以在字符串的其余部分修复时更改,我试图输出为 luckyInt(0)即替换除Int的动态字符以外的所有字符,并删除0周围的引号,我尝试使用replacesubstring方法,它对我来说很好,但我希望使用regex获得此输出,我尝试但没有任何工作,有人请帮助。

还有一个案例是:

 input string = richardcore.util.BigNum("0")

 output string = richardInt(0)

3 个答案:

答案 0 :(得分:2)

不需要正则表达式,你可以简单地做到:

val str = """luckycore.util.BigNum("0")"""
val l = str.replace(str.substring(str.indexOf("core"),str.indexOf("(")).trim,"Int").replace("\"","")

答案 1 :(得分:1)

您可以尝试使用正则表达式([a-z]{5})(core\.util\.BigNum\(\"0\"\)),然后将字符串替换为首次捕获的群组

您可以在https://regex101.com/r/1DhgLo/1

播放此正则表达式

我不熟悉Scala或Java。但是正则表达式应该保持不变。

答案 2 :(得分:0)

如果我正确理解您的要求,则无需使用正则表达式。您可以按如下方式定义一个简单函数(在Scala中):

// Replace substring trailing after the first n characters 
def replaceTail(s: String, n: Int, tail: String) = {
  s.substring(0, n) + tail
}

val str1 = """luckycore.util.BigNum("0")"""
replaceTail(str1, 5, "Int(0)")
res1: String = luckyInt(0)

val str2 = """richardcore.util.BigNum("0")"""
replaceTail(str2, 7, "Int(0)")
res2: String = richardInt(0)