java - 如何在 Java 中使用 split() 字符串方法分隔单词
问题描述
我想分隔单词并将它们打印在一行中,中间有一个连字符(-)。我编写了以下代码,但它只打印最后一个单词,后跟连字符,即输出是胡萝卜-。我不明白为什么以及要进行哪些更改才能获得所需的输出?
public class SeparatingWords {
public static void main(String[] args) {
String str = "apple banana carrot";
System.out.println(separatingWords(str));
}
public static String separatingWords(String str) {
String[] words = str.split(" ");
String result = null;
for (int i = 0; i < words.length; i++) {
result=words[i]+"-";
}
return result;
}
}
解决方案
与其调用 asplit
并连接字符串,为什么不能直接调用replaceAll
来实现你的目标。这将使您的代码变得简单。
String result = str.replaceAll(" ", "-");
以下是您的示例修改代码。希望这可以帮助
public class Sample {
public static void main(String[] args) {
String str = "apple banana carrot";
System.out.println(separatingWords(str));
}
public static String separatingWords(String str) {
String result = str.replaceAll(" ", "-");
return result;
}
}
如果您想根据方法内部的要求执行任何其他操作,那么下面应该适合您。正如@Moler 所建议的那样,添加+=
并初始化了result
对象
public static String separatingWords(String str) {
String[] words = str.split(" ");
String result = ""; // Defaulted the result
for (int i = 0; i < words.length-1; i++) {
result += words[i] + "-"; // Added a +=
}
result += words[words.length - 1];
return result;
}
推荐阅读
- android - 如何为我的移动应用程序选择平台以及如何将其演变为多个平台?
- php - 创建没有库的excel文件
- go - 配置 [go build]/[go test] 等以在诊断消息中显示绝对路径
- kotlin - 将 Period 添加到 startDate 不会产生 endDate
- node.js - 用于 NodeJS 的 Google App Engine 标准环境中的 Memcache
- laravel - Route::has note 检测路由资源
- wordpress - 在 Wordpress 上使用网格插件记录错误
- google-analytics - 来自 Google Analytics 中外部域的奇怪流量
- python - 在 LSTM 中关闭 Return_Sequence 后如何解决尺寸问题?
- ruby - 使用 openssl ruby 使用密码加密私钥