[英]Java. Capitalizing, adding period
正在从事这项新手任务,需要帮助。
此代码必须:将第一个单词的首字母大写。 在句子的末尾添加句点(。)。 将单词连接成一个完整的字符串,并带有空格。 不要对单词进行其他操作。
这是此代码应执行的示例:INPUT“ i ”,“ am ”,“ super ”,“ HERO ”输出我是super HERO。
我在这种情况下想到了这一点:
import java.util.StringJoiner;
import java.lang.String;
public class My {
public static void main(String[] args) {
String[] arr = new String[]{"i", "am", "super", "HERO"};
StringJoiner sj = new StringJoiner(" ");
//StringBuffer sb = new StringBuffer(".");
for (String s : arr) {
sj.add(s);
}
sj.append(".");
sj.capitalize();
System.out.println(sj);
}
但是在“ 追加 ”和“ 大写 ”处捕获错误-无法解决方法。 请帮忙。
StringJoiner
不提供append
和capitalize
方法,因此会出现错误。 检查文档 。
的.
应该添加到sj.toString()
的结果上,即String result = sj.toString() + ".";
。 大写必须在第一个单词s
,而不要在StringJoiner
上StringJoiner
。
这是一个完整的工作片段:
String[] arr = new String[]{"i", "am", "super", "HERO"};
StringJoiner sj = new StringJoiner(" ");
// Capitalize first word
sj.add(Character.toUpperCase(arr[0].charAt(0)) + arr[0].substring(1));
// Add the remaining words
for (int i = 1; i < arr.length; i++) {
sj.add(arr[i]);
}
String result = sj.toString() + ".";
System.out.println(result);
请注意,您可能需要检查arr
中根本没有单词的边缘情况,即它为空。 当前代码将失败。
帮个忙,将大写的代码包装到一个小的实用程序方法中:
private static String capitalize(String word) {
return Character.toUpperCase(word.charAt(0)) + word.substring(1);
}
那么代码就是:
String[] arr = new String[]{"i", "am", "super", "HERO"};
StringJoiner sj = new StringJoiner(" ");
// Capitalize first word
sj.add(capitalize(arr[0]));
// Add the remaining words
for (int i = 1; i < arr.length; i++) {
sj.add(arr[i]);
}
String result = sj.toString() + ".";
System.out.println(result);
如果您喜欢Stream-API:
String result = capitalize(arr[0])
+ Arrays.stream(arr).skip(1)
.collect(Collectors.joining(" "))
+ ".";
您还可以添加"."
通过使用StringJoiner
的后缀:
StringJoiner sj = new StringJoiner(" ", "", ".");
然后它将自动添加"."
到最后,当您执行toString
。
与Stream解决方案类似:
Collectors.joining(" ", "", ".")
一个带有StringBuilder的小例子,您可以在这里https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html进行检查,它们具有append方法。
对于单词大写,您可以检查如何大写字符串中每个单词的第一个字符
例
String[] arr = new String[]{"i", "am", "super", "HERO"};
StringBuilder sb = new StringBuilder();
for (String word : arr){
sb.append(WordUtils.capitalize(word));
}
sb.toString();
无法使用StringJoiner做到这一点。
public class My {
public static void main(String[] args) {
String[] arr = new String[]{"i", "am", "super", "HERO"};
arr[0].toUpperCase();
StringJoiner sj = new StringJoiner(" ");
for (String s : arr) {
sj.add(s);
}
sj.append(".");
System.out.println(sj);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.