在特定位置向字符数组添加内容(Java)
我的任务是使用一个用户句子,然后用大写字母分隔,并在添加" "
后用小写字母分隔
我想添加一个空格来添加该位置,这样如果用户输入"HappyDaysToCome"
将输出"Happy days to come"
当前代码
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("Please enter a sentence");
String sentenceString = s.nextLine();
char[] sentenceArray = sentenceString.toCharArray();
for(int i = 0; i < sentenceArray.length; i++)
{
if(i!=0 && Character.isUpperCase(sentenceArray[i]))
{
Character.toLowerCase(sentenceArray[i]);
sentenceArray.add(i, ' ');
}
}
System.out.println(sentenceArray)
s.close();
}
}
# 1 楼答案
我们基本上希望将输入字符串标记为大写字母。这可以使用正则表达式
[A-Z][^A-Z]*
(即一个大写字母,后跟零个或多个“not”大写字母)来实现。String
类有一个内置的split()
方法,该方法采用正则表达式。不幸的是,您还希望保留分隔符(大写字母),这样会稍微复杂一些,但仍然可以使用Pattern
和Matcher
将匹配的分隔符放回字符串中:输出:
# 2 楼答案
你走错路了。只需将每个字符添加回一个新字符串,但在正确的位置包含空格。根本不用担心修改字符数组。下面是对您的代码的轻微修改:
如果想要优化性能,可以使用
StringBuilder
对象。然而,对于一个句子的间隔,性能根本不会产生任何真正的影响。如果性能对你来说很重要,请阅读更多关于StringBuilder
的内容:# 3 楼答案
数组没有
add
方法。数组不可调整大小。如果您确实想使用char[]
数组,则需要分配一个足够大的数组,例如,通过计算大写字母或简单地分配一个肯定足够大的数组(两倍String
长度减去1)或者最好还是用
StringBuilder