从 java 中带有符号的字符串数组返回单词?
Returning words from a string array with symbols between them in java?
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 语句中,每个语句之间带有“+”这样的话 return 就像 https://www.google.com/#q=please+help+me+with+this+question
?
通过使用Arrays.toString
和replace
你可以达到你想要的结果
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
您可以使用以下方法:
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?";
}
您可以遍历 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();
}
你只需要使用一个 foreach 循环,像这样的东西可以帮助:
if(args.length >= 1){
String finalStr="";
for(String currentStr:args){
finalStr+=currentStr+"+";
}
finalStr= finalStr.substring(0, finalStr.length()-1);
}
使用此代码,您将在 finalStr 中进行搜索,只需将其值附加到您的 URL,如您所见,每个元素后添加了符号“+”,我总是删除最后一个元素 ( "+") 因为它在字符串的末尾是不必要的。
虽然已经有一个可接受的答案,但我给出了一些替代方案:
Java 8个字符串连接
如果您使用的是Java 8,它已经提供了一个您可以使用的连接方法:
return "https://www.google.com/#q=" + String.join("+", args);
(如果您使用的是 Java < 8,您仍然可以找到很多类似的实用程序,例如 Commons Lang)
加入循环
为此写一个恰当简洁的循环也不难:
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;
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 语句中,每个语句之间带有“+”这样的话 return 就像 https://www.google.com/#q=please+help+me+with+this+question
?
通过使用Arrays.toString
和replace
你可以达到你想要的结果
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
您可以使用以下方法:
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?";
}
您可以遍历 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();
}
你只需要使用一个 foreach 循环,像这样的东西可以帮助:
if(args.length >= 1){
String finalStr="";
for(String currentStr:args){
finalStr+=currentStr+"+";
}
finalStr= finalStr.substring(0, finalStr.length()-1);
}
使用此代码,您将在 finalStr 中进行搜索,只需将其值附加到您的 URL,如您所见,每个元素后添加了符号“+”,我总是删除最后一个元素 ( "+") 因为它在字符串的末尾是不必要的。
虽然已经有一个可接受的答案,但我给出了一些替代方案:
Java 8个字符串连接
如果您使用的是Java 8,它已经提供了一个您可以使用的连接方法:
return "https://www.google.com/#q=" + String.join("+", args);
(如果您使用的是 Java < 8,您仍然可以找到很多类似的实用程序,例如 Commons Lang)
加入循环
为此写一个恰当简洁的循环也不难:
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;