Java 为什么我们在这里(int)和(space)一起使用?
这里有所有的代码Java 为什么我们在这里(int)和(space)一起使用?,java,string,Java,String,这里有所有的代码 int lastSpace = fullName.lastIndexOf(" "); 还有为什么我们使用(+1) 这里 因为空格将firstName和lastName分开 输入应该看起来像“firstName lastName”。如果从中获取“”空格的位置,“lastName”部分从下一个字符开始,因此+1到获取子字符串的位置。在Java中,索引从0开始。 例如: String lastName = fullName.substring(lastSpace + 1); 空格
int lastSpace = fullName.lastIndexOf(" ");
还有为什么我们使用(+1)
这里
因为空格将firstName和lastName分开
输入应该看起来像“firstName lastName”。如果从中获取“”空格的位置,“lastName”部分从下一个字符开始,因此+1到获取子字符串的位置。在Java中,索引从0开始。
例如:
String lastName = fullName.substring(lastSpace + 1);
空格分隔名字和姓氏。
因此,0到索引[“”]-1
是名字索引[“”]+1 to length()
是第二个名称
希望现在清楚。这里的全名由名字和姓氏组成,此代码搜索第一个空格,以便将名字和姓氏分开
但是我建议允许用户同时输入姓和名,而不是全名,因为不可能知道有多少单词组成了名和姓的相同部分。正如@0x01所提到的,您可以得到空格的索引,但是在姓氏中,从索引+1的位置开始,这就是原因,检查一下这个输出
String name = "Moataz Mohamed";
name[0]='M';
name[1]='o';
...
name[6]=' '; //Space
输出如下所示:
{...}
public static final String NAME1 = "Julian Papadopulos";
public static final String NAME2 = "John von Bahnhof";
public static final char SPLITCHAR = ' ';
{...}
public static void splitNamesBySpaceIndex() {
// name1
int firstSpace = NAME1.indexOf(" ");
int lastSpace = NAME1.lastIndexOf(" ");
String firstName = NAME1.substring(0, firstSpace);
String lastName = NAME1.substring(lastSpace + 1);
System.out.println("lastname: \'" + lastName + "\', firstname: \'" + firstName + "\'");
lastName = NAME1.substring(lastSpace);
System.out.println("lastname: \'" + lastName + "\', firstname: \'" + firstName + "\'");
}
如您所见,在第二种情况下,您将解析姓氏,如“Papadopulos”
,这是不正确的,其原因是将开始索引作为空间的索引-这就是您需要索引+1的位置的原因
lastname: 'Papadopulos', firstname: 'Julian'
lastname: ' Papadopulos', firstname: 'Julian'
lastname: 'Papadopulos', firstname: 'Julian'
lastname: ' Papadopulos', firstname: 'Julian'
This is like this...
FIRSTNAME LASTNAME
012345678901234567
FIRSTNAME Starts from 0
Index of " " is 9
LASTNAME Starts from 10
That is why you need to add (+1) here
indexOf(" ") {9} but you have to start with LASTNAME which is at 10
If you do not add (+1) then Output will be " LASTNAME"