我有:
String s = "NyffsGeyylB";我需要把它改为:
String result = "N-Yy-Fff-Ffff-Sssss-Gggggg-Eeeeeee-Yyyyyyyy-Yyyyyyyyy-Llllllllll-Bbbbbbbbbbb";到目前为止,我的代码如下:
// I use HashMap to count elements
Map<Integer, String> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
map.put(i + 1, String.valueOf(s.charAt(i)));
}
// Then I convert it to list
for (Map.Entry<Integer, String> m : map.entrySet()) {
for (int i = 0; i < m.getKey(); i++) {
tempRes.add(m.getValue());
}
}
// Then I capitalize first letters and add dash
ListIterator<String> iterator = tempRes.listIterator();
while (iterator.hasNext()) {
iterator.set(iterator.next().toLowerCase());
}
result.add(tempRes.get(0).toUpperCase());
for (int i = 1; i < tempRes.size(); i++) {
if (tempRes.get(i).equalsIgnoreCase(tempRes.get(i - 1))) {
result.add(tempRes.get(i));
} else {
result.add("-");
result.add(tempRes.get(i).toUpperCase());
}
}
// And finally I add elements from result list to string:
for (int i = 0; i < result.size(); i++) {
finalResult += result.get(i);
}因此,我得到:
"N-Yy-Fffffff-Sssss-Gggggg-Eeeeeee-Yyyyyyyyyyyyyyyyy-Llllllllll-Bbbbbbbbbbb"但我需要:
"N-Yy-Fff-Ffff-Sssss-Gggggg-Eeeeeee-Yyyyyyyy-Yyyyyyyyy-Llllllllll-Bbbbbbbbbbb";我怎样才能做到这一点?
发布于 2022-10-12 11:31:50
for ( int i = 0 ; i < input.length() ; i++){
System.out.print(Character.toUpperCase(input.charAt(i)));
for (int j = 0; j < i; j++){
System.out.print(Character.toLowerCase(input.charAt(i)));
}
if ( i < input.length() - 1)
System.out.print("-");
}发布于 2022-10-12 11:54:12
这看起来是一个方便的流操作。
AtomicInteger index = new AtomicInteger(0);
String result = "NyffsGeyylB"
.chars()
.mapToObj(c -> String.valueOf((char) c))
.map(s -> s.repeat(index.addAndGet(1)))
.map(s -> s.substring(0,1).toUpperCase() + s.substring(1).toLowerCase())
.collect(Collectors.joining("-"));
System.out.println(result);String.
在审查员看来,方便可能是也可能不是。
https://stackoverflow.com/questions/74040852
复制相似问题