【问题标题】:How to split a string in Java using .indexOf() [duplicate]如何使用 .indexOf() 在 Java 中拆分字符串 [重复]
【发布时间】:2018-04-17 07:52:15
【问题描述】:

我正在尝试创建一个程序,该程序接受用户输入(假设 3 个单词)并输出第一个单词大写,第二个单词小写,第三个单词仅输出前两个字符。我不明白为什么第三个是整个打印加上前两个字符而不仅仅是前两个字符。非常感谢!到目前为止,我有这个:

import java.util.Scanner;

public class Words {

    public static void main (String[] args){

        Scanner keyboard = new Scanner(System.in);

        String line = keyboard.nextLine();

        String word1 = line.substring(0, line.indexOf(" ")).toUpperCase();
        String word2 = line.substring(line.indexOf(" ") +1).toLowerCase();
        String word3 = line.substring(line.lastIndexOf(" ")+1).substring(0, 
        ,2);

        System.out.println(word1 + " " + word2 + " " + word3);
    }

}

输出:

JAVA很有趣

【问题讨论】:

  • 这不是重复的。我试图找出如何使用 indexOf 方法将字符串拆分为单词,而不是使用此方法访问字符。谢谢

标签: java string substring indexof lastindexof


【解决方案1】:

你说

String word2 = line.substring(line.indexOf(" ") +1).toLowerCase();

这使得word2 假定为is fun 的值。此外,对于第 3 个单词,您说 .substring(0,2)(因为子字符串的第二个数字不包含在内)这会引入 fu,从而创建输出 JAVA is fun fu

另一种实现方式可以是仅按空格拆分字符串并将其轻松分配给三个变量。

【讨论】:

  • 像这样:String s[] = line.split(" ");字符串 word1 = s[0].toUpperCase;字符串 word2 = s[1].toLowerCase;字符串 word3 = s[2]; // 检查 word3 是否包含至少 2 个字符: word3 = word3.substring(0, Math.min(2, word3.length())); System.out.println(word1 + " " + word2 + " " + word3);
  • @HeikoJakubzik 你不应该提供代码:至少我是这么认为的。你应该给提问者足够的微妙提示,以便他能够思考他的代码,意识到他的错误,纠正它们并学习:)
  • 我不想求助于使用数组的解决方案,但我正在尝试使用 indexOf 方法来设置每个标记的边界。
  • @DianaConstantina 是的,您的部分代码可以改进以实现它(基于我的回答)。您需要定义第二个单词的结束索引。没有结束索引的子字符串假定后面的整个字符串。像line.substring(line.indexOf(" ") +1, line.lastIndexOf(" ")).toLowerCase(); 这样的东西应该可以工作。
  • 非常感谢 Parijat Purohit!它确实有效!
猜你喜欢
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 2023-03-23
  • 2018-03-29
  • 2017-07-22
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
相关资源
最近更新 更多