删除字符串数组中的空格



这段代码应该检查一个字符串数组,看看单词之间是否有空格。下面是一个示例:{"every"、"near ing"、"checking"、"food"、"stand"、"value "}。它应该改为保持:{"每","接近","检查","食物","站立","值"}。这是我到目前为止的代码:

package space;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class spacefinder {
public static void main (String[] args) {
String[] arr = {"every", "near ing", "checking", "food", "stand", "value"};
Pattern pattern = Pattern.compile("\arr");
Matcher matcher = pattern.matcher(arr);
boolean found = matcher.find();
}
} 

这段代码会导致错误,我看到的每个教程都没有使用字符串数组,例如在我的例子中是 String[] Arr,它们只使用常规的 String = 语句。

如果您不需要使用正则表达式和匹配,我尝试用 List 包装原始数组,并在其上使用流对列表中的每个字符串应用 replaceAll()。

String[] arr = {"every", "near ing", "checking", "food", "stand", "value"};
List<String> strings = Arrays.asList(arr);
strings.replaceAll(s -> s.replaceAll("\s","")); 
for(int i=0;i< strings.size();i++)
System.out.println(strings.get(i));

输出:

every
nearing
checking
food
stand
value

如果你必须使用正则表达式并匹配:(单词)(空格)(单词),那么你可以:

String[] arr = {"every", "near ing", "checking", "food", "stand", "value"};
Pattern pattern = Pattern.compile("\w\s\w");
boolean found = false;
for (String item : arr) {
Matcher matcher = pattern.matcher(item);
found = matcher.find();
if (found) {
break;
}
}

代码中的问题是您正在尝试将模式与错误的区域pattern.matcher(arr)匹配。匹配器方法采用 String 值.
上面的代码首先遍历数组,并匹配由空格分隔的两个单词组成的所有字符串.
因为问题中没有指定当刺痛与模式匹配时会发生什么,所以上面的代码在第一次匹配后终止。

首先,您需要修复正则表达式以查找空格,例如Pattern.compile("\s+").

其次,您需要迭代数组并替换每个字符串:

String[] arr = {"every", "near ing", "checking", "food", "stand", "value"};
Pattern pattern = Pattern.compile("\s+");
for (int i = 0; i < arr.length; i++) {
arr[i] = pattern.matcher(arr[i]).replaceAll("");
}
System.out.println(Arrays.toString(arr));

输出

[every, nearing, checking, food, stand, value]

String#replace

您不需要使用任何正则表达式;您只需使用String#replace来替换此字符串的每个子字符串,该子字符串与指定的文本替换序列匹配文本目标序列。

演示:

import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] arr = { "every", "near ing", "checking", "food", "stand", "value" };
System.out.println("Before: " + Arrays.toString(arr));
for (int i = 0; i < arr.length; i++) {
arr[i] = arr[i].replace(" ", "");
}
System.out.println("After: " + Arrays.toString(arr));
}
}

输出:

Before: [every, near ing, checking, food, stand, value]
After: [every, nearing, checking, food, stand, value]

最新更新