我正在编写一个生成星球大战名称的程序。用户输入他们的第一个,最后一个,母亲的婚前姓,出生城市和第一辆车,该程序给出了星球大战的名字。我需要用户输入的姓氏的最后两个字符*。我知道我可以使用substring
,但我无法工作。我最好的是:
lastname.substring(lastname.length() -2)
给出姓氏的前两个字母,而不是最后一个。此外,我无法使用lastname.substr(-2)
,因为substr
由于某种原因不起作用(不确定原因,这会更容易)。
感谢您的帮助。
*编辑:我希望我没有混淆任何人,我需要姓氏的最后两个字符。
实际上我现在看到了我的问题:我原来的姓氏变量是
String lastname = console.nextLine().substring(0,2).trim().toUpperCase();
保留前两个字母的,所以我得到前两个字母的原因是因为这个原因。我现在知道了。有没有办法从同一个变量中获取最后两个字母?
答案 0 :(得分:3)
因此,如果名称为Michael
,您只需要Micha
?
尝试:
String trimmedLastName = lastName.substring(0, lastName.length() - 2);
例如:
String lastName = "Michael";
String trimmedLastName = lastName.substring(0, lastName.length() - 2);
System.out.println(trimmedLastName); // prints Micha
我的工作和你的工作原因不是因为substring
的第一个参数是开始的地方。所以我从第一个字母开始,到第二个字母结尾(不包括在内)。
你所做的是从第二个字母开始,然后一直持续到字符串的结尾。
但是,如果您只想el
Michael
,则可以执行以下操作:
String lastName = "Michael";
String trimmedLastName = lastName.substring(lastName.length() - 2);
System.out.println(trimmedLastName); // prints el
答案 1 :(得分:0)
试试这个,
lastname.substring(lastname.length() -3,lastname.length() -1);
答案 2 :(得分:0)
如果您需要不同的方式,请点击此处:
StringBuffer myString = new StringBuffer(inputString);
myString.revert();
StringBuffer userInput = new StringBuffer(myString.subString(2));
String result = userInput.revert();
度过愉快的一天。
答案 3 :(得分:0)
lastname.substring(lastname.length() - 2)
应该返回最后2个字母。
lastname.substring(0, 2)
返回前两个。
substring(index)
包含
substring(index1, index2)
是包容性的,分别是独占的。
答案 4 :(得分:0)
因为String是不可变的所以当你调用subString时它不会改变lastname的值。
我认为你应该这样做: String genName = lastname.subString(lastname.lengh() - 2);