2013-11-30 3 views
0

Я читаю вывод журнала iptables непосредственно с консоли, и мне нужно немного очистить результаты.Невозможно заменить строки

В настоящее время я получаю:

SRC=192.168.1.1 PROTO=UDP DPT=12638 
SRC=192.168.1.1 PROTO=UDP DPT=5636 
SRC=192.168.1.1 PROTO=UDP DPT=8861 
SRC=192.168.1.1 PROTO=UDP DPT=15114 

Я пытаюсь удалить SRC =, PROTO = и ДПТ = ...

String results=a.toString(); 

results.replace("SRC="," "); 
results.replace("PROTO="," "); 
results.replace("DF TYPE=3"," "); 

tv=(TextView)findViewById(R.id.tv1); 
tv.setText("results:\n"+results); 

И, конечно же, ничего не удалялось: D

+5

Вам нужно для переназначения возвращаемого значения 'replace()'. Строки неизменяемы. –

ответ

-1

попробуйте этот образом:

results = results.replaceAll("SRC="," "); 
results = results.replaceAll("PROTO="," "); 

и @Sotirios Delimanolis прав.

-1

Изменить это:

results.replace("SRC="," "); 
results.replace("PROTO="," "); 
results.replace("DF TYPE=3"," "); 

Для этого:

results = results.replace("SRC="," "); 
results = results.replace("PROTO="," "); 
results = results.replace("DF TYPE=3"," "); 

Но вы сказали, что вы хотели, чтобы избавиться от них, так что я предполагаю, что вы не хотите, пустой Я думаю, вы ничего не хотите. Вы также сказали: «Я пытаюсь удалить SRC =, PROTO = и DPT = ...», так почему вы это делаете: replace("DF TYPE=3","")? Я предлагаю это:

results = results.replace("SRC=",""); 
results = results.replace("PROTO=",""); 
results = results.replace("DPT=",""); 

Или это (кредит Jason Sperske):

results = results.replaceAll("(SRC|PROTO|DPT)=", " "); 

.replace(String, String) вернет заменить строку, но не изменит значение текущей существующей строки. Как сказал Sotirios Delimanolis, строки неизменяемы.

+0

'.replaceAll()' принимает регулярное выражение, так что это будет работать 'results = results.replaceAll (" (SRC | PROTO | DF TYPE) = "," ");' –

1

использование регулярных выражений таким образом

results=results.replaceAll("(SRC|PROTO|DF TYPE)=", " "); 

Это заменит SRC или прото или тип ф.р. с "«(пробел) в одном line.No необходимость написания заменить 3 раза

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