我想从文件中替换字符串。 我有这样一句话:
[UICollectionViewData validateLayoutInRect:]
我想将从数据开始的所有字符串替换为使用空格登录
我试试这个我只能替换字符串,有没有办法用字符串的起始和终点替换?
SWF
答案 0 :(得分:2)
此代码具有正则表达式的锚定版本({
):
def fileText = '''\
qwe{data:"dede-dddd-ssss",login:"user",display:"screen1"},abc,xyz
...
qwe{data:"data2",login:"user2",display:"screen2"},abc,xyz
...
qwe{data:"data3",login:"user3",display:"screen3"},abc,xyz\
'''
fileText = fileText.replaceAll(/(?<=\{)\s*data:[^,]+,\s*login:[^,]+,/ , '')
println fileText
输出:
qwe{display:"screen1"},abc,xyz
...
qwe{display:"screen2"},abc,xyz
...
qwe{display:"screen3"},abc,xyz
更新
如果您正确理解了您的请求:以下代码从source
(c:\\sq\\file1.txt
)读取输入文本,并将修改后的文本放入目标文件dest
(c:\\sq\\file2.txt
) :
def source = new File("c:\\sq\\file1.txt")
def dest = new File("c:\\sq\\file2.txt")
dest.write(source.text
.replaceAll(/(?<=\{)\s*data:[^,]+,\s*login:[^,]+,/ , '') )
答案 1 :(得分:1)
如果你想在文件中使用它,那么你可以在下面试试,并在test2.txt中找到更新的数据:
注意:请根据您的环境更新文件路径
由@GsusRecovery提供正则表达式
def fileContent = new File('/tmp/test.txt').text
def replacedContent = fileContent.replaceAll(/(?<=\{)\s*data:[^,]+,\s*login:[^,]+,/ , '')
def newFile = new File('/tmp/test2.txt')
newFile.write(replacedContent)
答案 2 :(得分:0)
我并不完全清楚你期望的结果是什么。如果要从输入字符串中删除“数据”和“登录”字段以及相应的值,那么您的示例如下:
qwe{data:"dede-dddd-ssss",login:"user",display:"screen"},abc,xyz
变为:
qwe{display:"screen"},abc,xyz
然后您可以轻松使用正则表达式来执行此操作。
以下代码:
String str = """qwe{data:"dede-dddd-ssss",login:"user",display:"screen"},abc,xyz"""
str = str.replaceFirst("data.*login:\".+?\",", '')
println str
打印qwe{display:"screen"},abc,xyz