groovy用空格替换文件中的数据

时间:2015-12-01 17:06:27

标签: groovy

我想从文件中替换字符串。 我有这样一句话:

[UICollectionViewData validateLayoutInRect:]

我想将从数据开始的所有字符串替换为使用空格登录

我试试这个我只能替换字符串,有没有办法用字符串的起始和终点替换?

SWF

3 个答案:

答案 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

另请尝试online groovy web console

更新

如果您正确理解了您的请求:以下代码从sourcec:\\sq\\file1.txt)读取输入文本,并将修改后的文本放入目标文件destc:\\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