有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个像这样的字符串val str = "luckycore.util.BigNum("0")",字符串的前五个字符是动态的,当字符串的其余部分固定时可以更改,我尝试的是以 luckyInt(0)即用{}替换除动态字符以外的所有字符,并删除{}周围的引号,我尝试使用{}和{}方法,其工作对我来说很好,但我想使用{}获得此输出,我尝试了,但没有任何效果,请有人帮助

另一个例子是:

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

 output string = richardInt(0)

共 (3) 个答案

  1. # 1 楼答案

    您可以尝试使用Regex([a-z]{5})(core\.util\.BigNum\(\"0\"\)),然后用第一个捕获的组替换字符串

    您可以在https://regex101.com/r/1DhgLo/1处使用此正则表达式

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

  2. # 2 楼答案

    如果我正确理解您的要求,就不需要正则表达式。您可以定义一个简单函数(在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)
    
  3. # 3 楼答案

    不需要正则表达式,您只需执行以下操作:

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