如何从给定的列表中获取包含更多小写字符的字符串



如何从给定的List<String>中获取包含更多小写字符的字符串?

我已经使用Java 10 Streams以功能性的方式完成了这项工作,但我希望使用while循环以迭代的方式完成。但我不知道该怎么做。这是我的功能代码。

public static Optional<String> stringSearched (List<String> pl) {
return pl.stream()
.max(Comparator.comparing(x->x.chars()
.filter(Character::iLowerCase)
.count()
));
}
import java.util.ArrayList;
import java.util.List;
public class Something {
public static void main(String []args){
ArrayList<String> list = new ArrayList<String>();
list.add("LOSER");
list.add("wInner");
list.add("sECONDpLACE");
System.out.println(findMoreLowerCase(list));
}
private static String findMoreLowerCase(final List<String> list){
String moreLowerCase = ""; // Tracks the current string with less lowercase
int nrOfLowerCase=0; // Tracks the nr of lowercase for that string
int current; // Used in the for loop
for(String word: list){
current = countLowerCase(word);
if(current > nrOfLowerCase){
// Found a string with more lowercase, update
nrOfLowerCase = current;
moreLowerCase = word;
}
}
return moreLowerCase;
}
private static int countLowerCase(String s){
// Scroll each character and count 
int result = 0;
for (char letter : s.toCharArray()) {
if (Character.isLowerCase(letter)){
++result;
};
}
return result;
}
}

最简单的方法是迭代所有单词,用空字符串替换非小写字母(使用正则表达式,如[^a-z](,然后获得字符串的长度。

最长的字符串是小写字母最多的字符串。

private String moreLowerCase(final List<String> stringList) {
String moreLowerCase = "";
final Iterator<String> iterator = stringList.iterator();
while (iterator.hasNext()) {
final String current = iterator.next().replaceAll("[^a-z]", "");
if (current.length() > moreLowerCase.length())
moreLowerCase = current;
}
return moreLowerCase;
}

相关内容

最新更新