【发布时间】:2021-08-30 15:38:48
【问题描述】:
我正在尝试删除文本中的所有下划线或连字符,并且下划线或连字符之前的任何字母都应大写。
我的代码采用字符串参数并将字符串转换为插入堆栈的字符数组。然后我使用一个 while 循环从堆栈中弹出一个字符并使用 if 语句。 if 语句检查字符是否不是下划线或连字符,然后将其附加到字符串变量word。但如果是连字符或下划线,则将word 的第一个字母大写,因为这是最后附加的字符,并且不附加下划线或连字符。
但是,下划线和连字符仍保留在我检查并发现问题的字符串中。出于某种原因,下划线和连字符通过 if 语句 if(character != underscore || character != hyphen) 我不明白为什么当character 是连字符或下划线时,它不等于字符变量underscore 或hyphen。
这是我的代码:
import java.lang.StringBuilder;
import java.util.Stack;
class Solution{
static String toCamelCase(String s){
Stack<Character> stack = new Stack<Character>();
String word = null;
char underscore = '_';
char hyphen = '-';
char[] charArray = s.toCharArray();
for(char character : charArray){
stack.push(character);
}
while(!stack.empty()){
char character = stack.pop();
if(character != underscore || character != hyphen){
if(word == null){
word = String.valueOf(character);
}else{
word = character + word;
}
}else{
if(word != null){
char[] wordToCharArray = word.toCharArray();
char firstLetter = Character.toUpperCase(wordToCharArray[0]);
wordToCharArray[0] = firstLetter;
word = String.valueOf(wordToCharArray);
}
}
}
return word;
}
}
【问题讨论】:
-
请为你的 || 制定一个简单的真值表。条件是你不明白它为什么会失败。
-
看起来像是正则表达式的工作!
-
为自己编写代码的尝试是值得称赞的(如果这是一个类分配,也是可以理解的),但现在大多数人只会使用像 Apache Commons CaseUtils 这样的标准库类。
-
@DavidDenenberg 我不明白你所说的简单真值表是什么意思,if 语句中的条件语句有问题吗?
-
@kshetline 我没有使用正则表达式吗?
标签: java string stack character