java - 尝试遍历字符串并查找 char 是字母还是数字,然后将其附加到不同的字符串
问题描述
我需要遍历 String userInput 并查找 char 是字母还是数字,如果是,则需要将该 char 附加到 String endProduct。
public static String converter(String userInput) {
String endProduct = "";
char c = userInput.charAt(0);
Stack<Character> stack = new Stack<Character>();
int len = userInput.length();
//iterates through the word to find symbols and letters, if letter or digit it appends to endProduct, if symbol it pushes onto stack
for (int i = c; i < len; i++) {
if (Character.isLetter(userInput.charAt(i))) {
endProduct = endProduct + c;
System.out.println(c);
}//end if
else if(Character.isDigit(userInput.charAt(i))){
endProduct = endProduct + c;
System.out.println(c);
}
解决方案
这里有一些方法可以做到这一点。
方法 1 - 传统 Java。
private static String converter(String userInput) {
final StringBuilder endProduct = new StringBuilder();
for(char ch : userInput.toCharArray()) {
if(Character.isLetterOrDigit(ch)) endProduct.append(ch);
}
return endProduct.toString();
}
方法 2 - 流。
private static String converter(String userInput) {
int[] chars = userInput.codePoints().filter(Character::isLetterOrDigit).toArray();
return new String(chars, 0, chars.length);*/
}
或者
private static String converter(String userInput) {
return userInput.codePoints().filter(Character::isLetterOrDigit).collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();
}
推荐阅读
- c++ - 嵌套模板使用/typdef
- c# - DataGridView 连接到数据库
- c++ - 从 STL 优先队列中搜索/删除?
- javascript - 如何确定直接应用于元素的所有 CSS 样式?
- c# - 将数据传递到 Xamarin 中的 EventHub 时出现套接字异常
- bootstrap-4 - Bootstrap 两行网格问题(第一行小于第二行)
- java - Android Studio 构建错误:无法加载类
- reactjs - 预计 spyOn 函数将被称为 Jest
- c# - 在 Unity 中存储颜色数组的最佳方式是什么?
- javascript - 计算属性中的 Vue.js 奇怪行为