[英]java replacing char in string
firstLetter = word.charAt(0);
lastLetter = word.charAt((word.length()) - 1);
noFirstLetter = word.substring(1);
newWord = noFirstLetter + firstLetter;
if(word.equalsIgnoreCase(newWord))
因此,我试图取下单词的第一个字母,如果我取下单词的第一个字母并将其移到末尾,则它应等于同一单词。 我的代码在这里不起作用。 例如,如果用户输入“ dresser”,而将“ d”移到单词的末尾,则再次得到单词“ dresser”。 那就是我试图检查的
我认为您要尝试删除的是第一个字符,然后检查其余字符是否围绕单词中心对称(即使对我来说也很复杂)
例如:
梳妆台=>(放置d)=>梳妆台=>(向右添加d)=>梳妆台(从右到左读取,它又是梳妆台)。
删除第一个字母后:
梳妆台(单词中字母的偶数)
r e s s e r
|_|
|_____|
|_________|
由于它们是对称的,因此可以说,如果您从左向右移动D(反之亦然),则该单词将是回文。
如果我首先误解了您的问题,那么上面的整个事情可能是非常错误的。 但是我认为,您的问题不是一个简单的子字符串问题。
干杯。
好的,我假设您要获取一个string
,将其第一个索引移到末尾,然后反转该string
。 如果对诸如“ dresser”之类的单词执行此操作,则最终将获得相同的值。
这样的事情可能会起作用,目前未经测试:
public StringBuilder reverseWord(String word){
firstLetter = word.charAt(0); //find the first letter
noFirstLetter = word.substring(1); //removing the first index
newWord = noFirstLetter + firstLetter; //move first index to end
return new StringBuilder(newWord).reverse().toString(); //reverse
}
if(reverseWord("dresser").equals("dresser")){
//do something
}
编辑:正如Jose指出的,通过在word
上调用length()
来检查实际参数的长度很重要。
如果将“ d”移到单词“ dresser”的末尾,则会得到“ resserd”,它不等于“ dresser”。
如果将“ d”移到末尾然后反转单词,则它们相等。
因此,假设即使字符串被反转,您都认为字符串等于,您想要的代码将是:
boolean testPass = false;
if ( word.length()==0 )
testPass = true;
else
{
firstLetter = word.charAt(0);
noFirstLetter = word.substring(1);
newWord = noFirstLetter + firstLetter;
reversed = new StringBuilder(newWord).reverse().toString()
if (word.equalsIgnoreCase(newWord) || word.equalsIgnoreCase(reversed))
testPass = true;
}
if ( testPass )
// Do something
注意长度为0的单词的重要检查。否则word.charAt(0)将引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.