采用由以下字符串组成的字符串的arraylist:
subList
我想把它们拆开但是我想要使用拆分方法,因为我必须用我已经拆分的字母进行其他计算。
所以我决定使用public static void splitup(ArrayList<String> mystrings){
mystrings.subList(String[] letters, double numbers);
}
方法。但我似乎无法找到正确实现这一点的正确例子。看看我的代码。下面是一个方法,它接受字符串的arraylist作为参数:
fewf
kskfj
pqoen
mgnwo
总的来说,我如何获取每个字母和数字串并将它们存储到自己的字符串数组中?例如,我想要
5677
654
444
888
与
一起出现在自己的字符串中config.timeout_in = 1.day.beginning_of_day
是他们自己的号码。
答案 0 :(得分:0)
您可以使用此answer中所示的正则表达式,然后检查此answer中显示的模式,如下所示:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringSplitter {
public static void main(String[] args) {
ArrayList<String> myStringsList = new ArrayList<String>();
ArrayList<String> stringsList = new ArrayList<String>();
ArrayList<String> numbersList = new ArrayList<String>();
myStringsList.add("fewf5677");
myStringsList.add("kskfj654");
myStringsList.add("pqoen444");
myStringsList.add("mgnwo888");
for (String s : myStringsList) {
String splittedString[] = s.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
for (String string : splittedString) {
Matcher match = Pattern.compile("[0-9]").matcher(string);
if (match.find()) {
numbersList.add(string);
} else {
stringsList.add(string);
}
}
}
for (String s : numbersList) {
System.out.println(s);
}
for (String s : stringsList) {
System.out.println(s);
}
}
}
这将输出:
5677
654
444
888
fewf
kskfj
pqoen
mgnwo
请记住,split()
将正则表达式作为参数,而不是String
,因此,您可以执行类似上述代码的操作来获得所需的输出。
答案 1 :(得分:0)
你要做的事情有点奇怪。你为什么要重载subList方法?
您可以做的一个可能示例是迭代mystrings
列表并将每个字符串分成两个变量。
http://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/
如果您熟悉正则表达式,可以使用它们。
如果不是,您可以遍历字符串字符以将数字与数字分开。 http://java11s.blogspot.com/2012/02/java-program-to-separate-alphabets-and.html
然后将结果添加到两个单独的列表List<String>
和List<Double>
(或可能List<Integers>
)或创建自定义数据结构。
答案 2 :(得分:0)
您可以尝试这种方式:
如果我们认为您输入的格式是字符串,您要在其中提取整数,那么您应该逐个测试一个元素:
主要强>
public static void main(String[] a) {
List<String> myList = new ArrayList<>();
myList.add("fewf5677");
myList.add("kskfj654");
myList.add("pqoen444");
myList.add("mgnwo888");
List<String> listStrings = new ArrayList<>();
List<Integer> listIntegers = new ArrayList<>();
for (int i = 0; i < myList.size(); i++) {
listStrings.add(getStringPart(myList.get(i)));
listIntegers.add(Integer.parseInt(getIntegerPart(myList.get(i))));
}
System.out.println(listStrings);
System.out.println(listIntegers);
}
获取元素的字符串部分
private static String getStringPart(String str) {
String s = "";
for (int i = 0; i < str.length(); i++) {
if (!testInteger(str.charAt(i))) {
s += str.charAt(i);
} else {
break;
}
}
return s;
}
获取元素的整数部分
private static String getIntegerPart(String str) {
String s = "";
for (int i = 0; i < str.length(); i++) {
if (testInteger(str.charAt(i))) {
s += str.charAt(i);
}
}
return s;
}
检查str是否为Integer的方法
private static boolean testInteger(char str) {
try {
Integer.parseInt(str+"");
return true;
} catch (Exception e) {
return false;
}
}
<强>输出强>
[fewf, kskfj, pqoen, mgnwo]
[5677, 654, 444, 888]
希望这可以帮到你。