Java通过替换特定字符来转换一组字符串
但我希望输出如下:Java通过替换特定字符来转换一组字符串,java,arrays,string,list,replace,Java,Arrays,String,List,Replace,但我希望输出如下: [12, 124, 1234, 123, 1234] [astv, atthh, ggh, dhr, sfff, dgdfg, mnaoj] 要获取数字数组,您可以 用空字符串替换所有字母表 按星号拆分* - 代码 您可以重复同样的操作来获取字母表数组 String digitArr[] = str.replaceAll("[A-Za-z]", "").split("\\*"); //output //12124 1234123 1234 您可以将拆分与*一起使用,
[12, 124, 1234, 123, 1234]
[astv, atthh, ggh, dhr, sfff, dgdfg, mnaoj]
要获取数字数组,您可以
- 用空字符串替换所有字母表
- 按星号拆分
*
String digitArr[] = str.replaceAll("[A-Za-z]", "").split("\\*");
//output
//12124 1234123 1234
您可以将拆分与
*
一起使用,然后可以使用每个元素,例如:
String stringArr[] = str.replaceAll("[0-9]", "").split("\\*");
//Output
//astv atthhggh dhrsfff dgdfg mnaoj
要保留原始正则表达式逻辑,可以执行以下操作:
[12124, 1234123, 1234]
[astv, atthhggh, dhrsfff, dgdfg, mnaoj]
你为什么不想要
12
、124
和123
?您需要提供一些选择标准。请澄清您的问题。你能解释一下你想要实现的逻辑吗?我有一个类似“astv*12atthhh124ggh*dhr1234sfff123*dgdfg1234*mnaoj”的字符串,我想把数字和sting分别拆分成这样的列表[astv,atthhhggh,dhrsfff,dgdfg,mnaoj][1212412341231234]您需要澄清为什么12124
在列表中,而12
不在列表中。两者都出现在字符串中,但列表中只有前者。@ManojKumarGovindharaj是的,这一点很清楚。我不明白的是为什么12
和124
应该组合在一起,但是124
和1234
不应该组合在一起。如果最初没有模式组合,则需要使用该字符进行拆分
String stringArr[] = str.replaceAll("[0-9]", "").split("\\*");
//Output
//astv atthhggh dhrsfff dgdfg mnaoj
public static void main(String[] args) {
String str = "astv*12atthh124ggh*dhr1234sfff123*dgdfg1234*mnaoj";
String[] spl = str.split("\\*");//[astv, 12atthh124ggh, dhr1234sfff123, dgdfg1234, mnaoj]
List<String> strings = new ArrayList<>();
List<Integer> nums = new ArrayList<>();
for (String s : spl) {
String tmp = s.replaceAll("\\d+", "");//replace all the digits with empty
if (!tmp.trim().isEmpty()) {
strings.add(tmp);
}
tmp = s.replaceAll("[a-z]+", "");//replace all the character with empty
if (!tmp.trim().isEmpty()) {
nums.add(Integer.parseInt(tmp));
}
}
System.out.println(nums);
System.out.println(strings);
}
[12124, 1234123, 1234]
[astv, atthhggh, dhrsfff, dgdfg, mnaoj]
public static void main(String[] args) {
String str = "astv*12atthh124ggh*dhr1234sfff123*dgdfg1234*mnaoj";
List<String> strings = new ArrayList<>();
List<Integer> nums = new ArrayList<>();
Pattern digitPattern = Pattern.compile("\\d+");
Pattern alphaPattern = Pattern.compile("[a-z]+");
String[] splittedArray = str.split("\\*");
for (String nextSplittedString : splittedArray) {
Matcher digitMatcher = digitPattern.matcher(nextSplittedString);
Matcher alphaMatcher = alphaPattern.matcher(nextSplittedString);
String nextDigitAsString = "";
while (digitMatcher.find()) {
nextDigitAsString += digitMatcher.group();
}
if (!nextDigitAsString.isEmpty()) {
nums.add(Integer.parseInt(nextDigitAsString));
}
String nextString = "";
while (alphaMatcher.find()) {
nextString += alphaMatcher.group();
}
if (!nextString.isEmpty()) {
strings.add(nextString);
}
}
System.out.println(nums);
System.out.println(strings);
}
[12124, 1234123, 1234]
[astv, atthhggh, dhrsfff, dgdfg, mnaoj]