2016-03-19 2 views
0

Привет, я хочу заменить весь текст рисунком <%= anything %> <%= someFunction(anything) %>. Я хочу сохранить что-то в новой строке.Заменить определенный символ регулярным выражением или другим возможным способом

Пример:

<%= user %> 
<%= encode(user) %> 

OR 

<%=user%> 
<%=encode(user)%> 

Есть ли возможность к тому, что с REGEX или другим способом?

Благодаря перед тем

ответ

0

Да, можно с регулярным выражением. Образец \\s* соответствует опциональному пробелу, а \\S+ соответствует одному (или нескольким) символам без пробелов. Вы можете комбинировать это с String.format. Нечто подобное,

String str = "<%= user %>"; // <-- the input String 
String function = "encode"; // <-- the function to add 
// Create an output pattern using $1; the first match to `()` in replaceAll. 
String replacement = String.format("<%%= %s($1) %%>", function); 
str = str.replaceAll("<%=\\s*(\\S+)\\s*%>", replacement); 
System.out.println(str); 

Выход (по запросу)

<%= encode(user) %> 
+0

@Kim Попробуйте мой код. Замените «user» на «что угодно», например 'String str =" <% = anything%> ";' и вы получите '<% = encode (anything)%>'; аналогично, измените 'function' как' String function = "doSomethingElse"; 'и получите' <% = doSomethingElse (что-нибудь)%> '. –

+0

Привет, эллиот, я получил эту ошибку, когда попытаюсь. Ошибка в строке: 24 в файле jsp: /index.jsp Строковый литерал неправильно закрыт двойной кавычкой. Строка 24: Смещение строки = String.format ("<%% =% s ($ 1) %%>", function); – Kim

+0

@Kim Вы добавили котировку коду, это 'String.format (" <%% =% s ($ 1) %%> ", function);' –

0

Regex должны работать, что-то вроде этого

String res = "xxx <%= anything %> xxx".replaceAll("<%= (.*) %>", "<%= func($1) %>"); 
0

Вы можете использовать регулярное выражение.

str.replaceAll("\\<%= (.*) %\\>","<%= blah($1) %=>"); 

Первая часть шаблон (то, что вы хотите найти), а вторая часть является замена (то, что вы хотите, чтобы это выглядело как).

См: http://fiddle.re/u374q6

Я предлагаю прочитать больше о регулярных выражениях here и играя на этой первой ссылки.

+1

Не существует метода 'Replace' с капиталом в String. Существует метод 'replace ', но этот метод * не * работает с регулярными выражениями. –

+0

whoops sorry, предназначенный для заменыAll(). Слишком много C#. –

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