Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以连接字符串,每个字符串周围都有一个特定的字符串?_Java_String_Guava - Fatal编程技术网

Java 有没有一种方法可以连接字符串,每个字符串周围都有一个特定的字符串?

Java 有没有一种方法可以连接字符串,每个字符串周围都有一个特定的字符串?,java,string,guava,Java,String,Guava,我想用番石榴的Joiner将List连接成一个字符串,但是列表中的每个字符串周围都有环绕的字符串。因此,我想要一个字符串列表: List<String> names = Arrays.asList("John", "Mary", "Henry"); 我看到的使用Joiner的示例似乎是生成由逗号分隔的3个名称,但我希望用一些额外的字符串(每次都是相同的字符串)围绕每个字符串 我希望我在这里说得够清楚了。感谢您的帮助。实现这一点的方法是使用转换,首先: Joiner.on(", "

我想用番石榴的
Joiner
List
连接成一个字符串,但是列表中的每个字符串周围都有环绕的字符串。因此,我想要一个字符串列表:

List<String> names = Arrays.asList("John", "Mary", "Henry");
我看到的使用
Joiner
的示例似乎是生成由逗号分隔的3个名称,但我希望用一些额外的字符串(每次都是相同的字符串)围绕每个字符串


我希望我在这里说得够清楚了。感谢您的帮助。

实现这一点的方法是使用转换,首先:

 Joiner.on(", ").join(Iterables.transform(names, new Function<String, String>() {
   public String apply(String str) { return "your guest " + str + " is here"; }
 }));
Joiner.on(“,”).join(Iterables.transform(名称,新函数)(){
公共字符串apply(stringstr){返回“您的来宾”+str+“在这里”;}
}));
怎么样

    String str = "your guest " + Joiner.on(" is here, your guest ").join(names) + " is here";

如果Joiner不是必须的,您可以使用
String.format()

publicstaticvoidmain(字符串[]args){
List name=array.asList(“约翰”、“玛丽”、“亨利”);
StringBuilder=新的StringBuilder();

对于(int i=0;iYou不能仅使用
Joiner
Joiner
将内容放在元素之间,而不是放在元素周围。请查看此详细说明。F*是的,函数式编程!对于Java 8,
names.stream().map(name->“您的来宾”+name+“在这里”).collector(收集器.joining(“,”)
Joiner
的关键是避免这样的解决方案,所以+0。另外,您不应该在循环中连接
结果
,而是
将它的新部分附加到
StringBuilder
。我猜Natix指的是一个事实,即部分文本被硬编码了两次
    String str = "your guest " + Joiner.on(" is here, your guest ").join(names) + " is here";
public static void main(String[] args) {
        List<String> names = Arrays.asList("John", "Mary", "Henry");
        StringBuilder builder = new StringBuilder();

        for(int i=0; i<names.size();i++){
            builder.append(String.format("your guest %s is here, ", names.get(i)));
        }
        System.out.println(builder.substring(0,builder.length()-2).toString());
    }