在java中返回带有符号的字符串数组中的单词?

时间:2017-06-05 01:19:00

标签: java arrays string bots discord

public String onGoogleCommand(String[] args) {
    if(args.length == 0){
        return "Type in a question after the google command!";
    }
    if(args.length >= 1){
        return "https://www.google.com/#q=" + args[0] + "+" + args[1] + "+" + args[2];
    }
    return "What?";
}

我要问的是我说return "https://www.google.com/#q=" + args[0] + "+" + args[1] + "+" + args[2];的部分。显然,这可能不是编码搜索功能的最佳方式,但是我如何自动执行此操作,以便String [] args中的单词自动放入我的return语句中" +&#34 ;在每个单词之间,以便返回类似https://www.google.com/#q=please+help+me+with+this+question的内容?

5 个答案:

答案 0 :(得分:4)

虽然已经有一个公认的答案,但我给出了一些替代方案:

  1. Java 8字符串连接

    如果您使用的是Java 8,它已经提供了一个可以使用的连接方法:

    return "https://www.google.com/#q=" + String.join("+", args);
    

    (如果你使用Java< 8,你可以找到很多类似的工具,比如Commons Lang)

  2. 加入循环

    为此编写一个正确而简洁的循环也不难:

    StringBuilder result = new StringBuilder("https://www.google.com/#q=");
    boolean first=true;
    for (String arg : args) {
        result.append(first? "" : "+").append(arg);
        first = false;
    }
    return result;
    

    另一种形式,正如评论中的某人似乎不喜欢布尔标志:

    StringBuilder result = new StringBuilder();
    for (String arg : args) {
        result.append(result.length() == 0 ? "https://www.google.com/#q=" : "+")
              .append(arg);
    }
    return result;
    

答案 1 :(得分:3)

通过使用Arrays.toStringreplace,您可以获得所需的结果

String array[] = {"please", "help", "me"};
String output = "https://www.google.com/#q=" + Arrays.toString(array).
                    replace("[", "").
                    replace("]", "").
                    replace(", ", "+");
System.out.println(output);

<强>输出

 https://www.google.com/#q=please+help+me

答案 2 :(得分:0)

您可以使用以下方法:

public static String join(String[] array, String separator) {
    if (array == null) {
        return null;
    } else {
        if (separator == null) {
            separator = "";
        }

        if (array.length <= 0) {
            return "";
        } else {
            StringBuilder buf = new StringBuilder(array.length * 16);

            for (int i = 0; i < array.length; ++i) {
                if (i > 0) {
                    buf.append(separator);
                }

                if (array[i] != null) {
                    buf.append(array[i]);
                }
            }

            return buf.toString();
        }
    }
}

它实际上是从org.apache.commons.lang3;

导入的

示例:

public static String onGoogleCommand(String[] args) {
    if (args.length == 0) {
        return "Type in a question after the google command!";
    }
    if (args.length >= 1) {
        return "https://www.google.com/#q=" + join(args, "+");
    }
    return "What?";
}

答案 3 :(得分:0)

您可以遍历args[]数组并构建查询字符串:

public String onGoogleCommand(String[] args) {
    if(args == null || args.length == 0) {
        return "Type in a question after the google command!";
    }
    StringBuilder queryString = new StringBuilder("https://www.google.com/#q=");
    queryString.append(args[0]);
    for (int i=1; i < args.length; ++i) {
        queryString.append("+").append(args[i]);
    }

    return queryString.toString();
}

答案 4 :(得分:-1)

你只需要使用foreach循环,这样的东西可以帮助:

$ julia argscript.jl 2 3 "3,2,1;2,6,8"
String["2","3","3,2,1;2,6,8"]
2×3 Array{Int64,2}:
 3  2  1
 2  6  8
$ julia argscript.jl 2 4 "3,2,1;2,6,8"
String["2","4","3,2,1;2,6,8"]
ERROR: LoadError: at row 2, column 1 : ErrorException("missing value at row 1 column 4"))

使用此代码,您将在finalStr中进行搜索,只需将其附加到您的网址,因为您可以看到符号&#34; +&#34;在每个元素之后添加,我总是删除最后一个元素(&#34; +&#34;),因为它在字符串的末尾是不必要的。