繁体   English   中英

java替换字符串中的char

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM