繁体   English   中英

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

[英]regex to replace characters in a string

我有一个像这样的字符串val str = "luckycore.util.BigNum("0")" ,字符串的前五个字符,例如lucky是动态的,并且可以在字符串的其余部分修复时更改,我尝试的是得到输出为luckyInt(0)即替换所有luckyInt(0)除了动态一个与Int并删除0左右的引号,我尝试使用replacesubstring方法,它的工作正常,但我想用regex得到这个输出,我试过但没有什么工作,有人请帮助。

还有一个案例是:

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

 output string = richardInt(0)

没有必要使用Regex,你可以简单地做到:

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

您可以尝试使用Regex ([az]{5})(core\\.util\\.BigNum\\(\\"0\\"\\)) ,然后将String替换为第一个捕获的Group

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM