java - Java中如何打印String的中间三个字符?

标签 java string substring

我是编程和处理 Java String 赋值的新手。问题是:

  1. 声明一个名为 middle3 的 String 类型的变量(将您的声明与其他声明放在程序顶部附近)并使用赋值语句和 thesubstring 方法将由 phrase 中间三个字符组成的子字符串赋给 middle3(字符在中间索引以及左边的字符和右边的字符)。添加 println 语句以打印出结果。保存、编译并运行以测试您到目前为止所做的工作。

这是我所做的:

String phrase = new String ("This is a String test.");
String middle3 = new String ("tri"); //I want to print the middle 3 characters in "phrase" which I think is "tri".

middle3 = phrase.substring (9, 11); // this only prints out 1 letter instead of 3


System.out.println ("middle3: " + middle3);

这是我的输出:

Original phrase: This is a String test.
Length of the phrase: 18 characters
middle3:  S

我也认为字符串“phrase”中有 18 个字符,但如果没有,请告诉我。预先感谢您的所有帮助!

最佳答案

想想如何在不对 substring() 方法的边界进行硬编码的情况下检索中间的 3 个字符。您可以在这方面使用 length() 方法。例如,奇数长度的字符串的中间字符将始终位于索引 str.length()/2,而偶数长度的字符串的两个中间字符将始终位于索引 str.length()/2(str.length()/2) - 1。因此,三个中间字符的定义将由您决定。但为了我们的利益,我们将只在索引 (str.length()/2)-1, str.length()/2,和 (str.length()/2)+1。有了这些信息,你就可以修改你之前的这行代码了,

middle3 = phrase.substring (9, 11);

middle3 = phrase.substring (phrase.length()/2 - 1, phrase.length()/2 + 2);

至于你原来的那行代码为什么只返回一个字母,跟substring方法的参数有关。第一个参数是包容性的,但第二个参数不是。因此,您只检索了从 9 到 10 的字符。

This is a String test.
         ^^^
        9,10,11 (11 is not included)

我指向的三个字符分别位于索引 9、10 和 11。您只检索到字符“”和“S”,它们加起来就是“S”。这解释了之前的一个字母输出。

关于java - Java中如何打印String的中间三个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692076/

相关文章:

java - 格式化字符串货币

java - MVC 模型应该抽象到什么程度?

c++ - std::wstring:与 + 的连接无效

javascript - 用 <span> 标签包裹子字符串(带嵌套)

java - 使用 %1$s 时格式化文件名

java - 了解 BTree 容量

python - 如何使用字符串值作为对象名称

python - 后缀搜索 - Python

java - 如何判断一个字符串是否是子字符串。 java

android - Sqlite:遍历字符串字段的子字符串