Lea*_*ava 1 java string substring
我是编程和处理Java String分配的新手.问题是:
这是我做的:
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);
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
Original phrase: This is a String test.
Length of the phrase: 18 characters
middle3: S
Run Code Online (Sandbox Code Playgroud)
我还认为字符串"短语"中有18个字符,但如果没有,请告诉我.提前感谢您的帮助!
考虑如何在不对substring()方法的边界进行硬编码的情况下检索中间3个字符.您可以length()在这方面使用该方法.例如,奇数长度的字符串的中间字符总是会在索引str.length()/2,而偶数长度的字符串的两个中间的字符将永远在索引str.length()/2和(str.length()/2) - 1.所以三个中间字符的定义将取决于你.但是对于我们的缘故,我们只是在做索引3级中间人物(str.length()/2)-1,str.length()/2和(str.length()/2)+1.有了这些信息,您可以修改以前的这行代码,
middle3 = phrase.substring (9, 11);
Run Code Online (Sandbox Code Playgroud)
至
middle3 = phrase.substring (phrase.length()/2 - 1, phrase.length()/2 + 2);
Run Code Online (Sandbox Code Playgroud)
至于为什么以前的原始代码行只返回一个字母,它与substring方法的参数有关.第一个参数是包含的,但第二个参数不是.因此,您只检索9到10之间的字符.
This is a String test.
^^^
9,10,11 (11 is not included)
Run Code Online (Sandbox Code Playgroud)
我指出的三个字符分别位于索引9,10和11.你只检索了字符''和'S',它们只是"S".这解释了之前的单字母输出.
| 归档时间: |
|
| 查看次数: |
18135 次 |
| 最近记录: |