2015-12-01 5 views
0

Я хочу заменить строку из файла. у меня есть строка, как это:groovy заменить данные из файла пробелом

qwe{data:"dede-dddd-ssss",login:"user",display:"screen"},abc,xyz 

я хочу, чтобы заменить все строки, начиная с данных для входа с пробелами

я попробовать это я могу только заменить строку, есть способ заменить с начальная и конечная точки для строки?

def source = new File("c:\\sq\\file1.txt") 
def dest = new File("c:\\sq\\file2.txt") 

def fileText = source.text 
def filedest = dest.text 
for (index in 1..9) { 
    fileText = (fileText =~ /data/).replaceFirst("") 

ответ

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

+0

спасибо вам mbaird, я заменил две последние строки моего кода по: fileText = fileText.replaceFirst ("Data. * Login: \". +? \ ",", '') Это не сработало для меня, я пытаюсь сделать это в файле. –

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

UPDATE

Если правильно понял ваш запрос: этот следующий код чтения ввода текста из 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:[^,]+,/ , '')) 
+0

Regex работает, чтобы заменить назначенный +1. – Rao

+0

он не работает после выполнения, файл сохраняет те же данные –

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) 
+0

Я пробовал, я не удалял данные, все данные присутствуют в файле test2.txt –

+0

, можете ли вы показать оба файла, пожалуйста? – Rao

+0

Содержимое файла слишком длинное Я попытаюсь прикрепить –

Смежные вопросы