Вы можете создать свою собственную функцию JSP. http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags6.html
Это примерно то, что вам нужно сделать.
Создать файл дескриптора библиотеки тегов /src/META-INF/sf.tld
1.0
sf
http://www.stackoverflow.com
clean
com.stackoverflow.web.tag.function.TagUtils
java.lang.String clean(java.lang.String)
Создать класс Java для логики функций. com.stackoverflow.web.tag.function.TagUtils
package com.stackoverflow.web.tag.function;
import javax.servlet.jsp.tagext.TagSupport;
public class TagUtils extends TagSupport {
public static String clean(String comment) {
return comment.replaceAll("\n", "; ");
}
}
В вашем JSP вы можете получить доступ к своей функции следующим образом.
<%@ taglib prefix="sf" uri="http://www.stackoverflow.com"%>
${sf:clean(item.comments)}
На основании вашего обновленного запроса, запрашивая условие выхода, я изменил код. Обратите внимание, что я использовал getline(cin, answer)
для обработки ввода. Я использую getline (), потому что у меня меньше шансов запутаться, когда я использую getline()
вместо cin >> answer
.
Обратите внимание, что getline (cin, answer) делает несколько вещей для вас:
blockquote>
- Возвращает true, если вход был получен
- Заполняет ответ
[ 1110] Получает всю строку, пока пользователь не предоставит новую строкуТаким образом, строка
while (std::getline(std::cin, answer) && answer != "n")
получит всю книгу, даже если есть пробелы. & Amp; & amp; позволяет проверить ответ для «n» перед входом в тело цикла while. Поскольку ответом являетсяstd::string
, сравнение проводится с"n"
, а не с'n'
.Если это работает для вас, пожалуйста, примите ответ. Удачи!
#include <iostream> #include <string> #include <iomanip> // setprecision int main() { std::string bookname[5] = {"STPM BOOKS", "SPM BOOKS", "PMR BOOKS", "TEXT BOOK", "PRACTICAL BOOK"}; float price[5] = {30.90, 24.90, 19.90, 45.90, 15.90}; std::string answer; float cost; std::cout << "Please provide the name of a book or type 'n' to exit" << std::endl; // get one line into answer, and also exit while if answer is "n" while (std::getline(std::cin, answer) && answer != "n") { bool found = false; for (int i = 0; i < 5; i++) { if (bookname[i] == answer) { std::cout << "The book " << bookname[i] << " costs $" << std::fixed << std::setprecision(2) << price[i] << std::endl; found = true; break; // /no need to continue inside the for loop } } // on last loop, give up if (!found) { std::cout << "The book " << answer << " is not in our inventory" << std::endl; } } }