Это должно распечатать все параметры, начинающиеся с «Вопрос».
<html><body>
<%@ page import = "java.util.*" %>
<b>Parameters:</b><br>
<%
Enumeration parameterList = request.getParameterNames();
while( parameterList.hasMoreElements() )
{
String sName = parameterList.nextElement().toString();
if(sName.toLowerCase.startsWith("question")){
String[] sMultiple = request.getParameterValues( sName );
if( 1 >= sMultiple.length )
// parameter has a single value. print it.
out.println( sName + " = " + request.getParameter( sName ) + "<br>" );
else
for( int i=0; i<sMultiple.length; i++ )
// if a paramater contains multiple values, print all of them
out.println( sName + "[" + i + "] = " + sMultiple[i] + "<br>" );
}
}
%>
</body></html>
EDIT
Я также заметил основную проблему реализации toString ()
, а также об элементе, содержащем разделитель, но Я думал, что я параноик.
Поскольку у меня есть два комментария по этому поводу, я изменяю свой ответ на:
static String join( List<String> list , String replacement ) {
StringBuilder b = new StringBuilder();
for( String item: list ) {
b.append( replacement ).append( item );
}
return b.toString().substring( replacement.length() );
}
Что очень похоже на исходный вопрос.
Так что, если вам не хочется добавлять всю банку в ваш проект вы можете использовать это.
Я думаю, что с вашим исходным кодом все в порядке. Собственно, альтернатива тому, что все '
Вы можете использовать библиотеку общего пользования apache, которая имеет класс StringUtils и метод соединения.
Проверьте эту ссылку: https://commons.apache.org/proper/commons -lang / javadocs / api.2.0 / org / apache / commons / lang / StringUtils.html
Обратите внимание, что указанная выше ссылка может со временем устареть, и в этом случае вы можете просто поискать в Интернете «apache commons StringUtils», что должно позволить вам найти самую последнюю ссылку.
(ссылка на этот поток) Java-эквиваленты C # String.Format () и String.Join ()
All the references to Apache Commons are fine (and that is what most people use) but I think the Guava equivalent, Joiner, has a much nicer API.
You can do the simple join case with
Joiner.on(" and ").join(names)
but also easily deal with nulls:
Joiner.on(" and ").skipNulls().join(names);
or
Joiner.on(" and ").useForNull("[unknown]").join(names);
and (useful enough as far as I'm concerned to use it in preference to commons-lang), the ability to deal with Maps:
Map<String, Integer> ages = .....;
String foo = Joiner.on(", ").withKeyValueSeparator(" is ").join(ages);
// Outputs:
// Bill is 25, Joe is 30, Betty is 35
which is extremely useful for debugging etc.
Нет, такого удобного метода нет в стандартном API Java.
Неудивительно, что Apache Commons предоставляет такую вещь в своем классе StringUtils на тот случай, если вы не хотите писать ее самостоятельно.
Не из коробки, но во многих библиотеках есть похожие:
Commons Lang:
org.apache.commons.lang.StringUtils.join(list, conjunction);
Spring:
org.springframework.util.StringUtils.collectionToDelimitedString(list, conjunction);
Вы можете сделать это:
String aToString = java.util.Arrays.toString(anArray);
// Do not need to do this if you are OK with '[' and ']'
aToString = aToString.substring(1, aToString.length() - 1);
Или однострочным (только если вы не хочу '[' и ']')
String aToString = java.util.Arrays.toString(anArray).substring(1).replaceAll("\\]$", "");
Надеюсь, это поможет.
Google Guava API также имеет .join (), хотя (что должно быть очевидно из других ответов), Apache Commons здесь в значительной степени является стандартом.
Вы можете попробовать метод соединения Apache Commons StringUtils:
http://commons.apache.org/lang/api/org/apache/commons/lang/StringUtils.html# join (java.util.Iterator , java.lang.String)
Я обнаружил, что Apache StringUtils подбирает слабину jdk; -)
Имеющийся у вас код - правильный способ сделать это, если вы хотите использовать JDK без каких-либо внешних библиотек. Не существует простого однострочника, который вы могли бы использовать в JDK.
Если вы можете использовать внешние библиотеки, я рекомендую вам изучить класс org.apache.commons.lang.StringUtils в библиотеке Apache Commons.
Пример использования:
List<String> list = Arrays.asList("Bill", "Bob", "Steve");
String joinedResult = StringUtils.join(list, " and ");