用单个空格替换字符串中的多个字符
我想用给定的字符串中的多个字符替换一个空格。用单个空格替换字符串中的多个字符
如:He is a very very good boy, isn't he?
应及时更换,
He
is
a
very
very
good
boy
isn
t
he
我的代码是
String str = "He is a very very good boy, isn't he?"
String str2 = str.replaceAll("![,?.\_'@+] +"," ");
String []tokens = str2.split(" +");
for(int i = 0; i< tokens.length; i++)
System.out.println(tokens[i]);
但输出
He
is
a
very
very
good
boy,
isn't
he?
请纠正我的代码,如果可能的话还是建议新一。
我尝试了所有上述,但这一个工作。
BufferedReader br = new BufferedReader(new InputStreamReader(System。在));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
List<String> splitted = new ArrayList<>(Arrays.asList(S.split("[ :#$%^&/<>{}*|;_()!,?.'@+\\\\\\[\\]\\\"]+")));
splitted.removeAll(Arrays.asList(null,""));
System.out.println(splitted.size());
for (String word: splitted) System.out.println(word);
这是我发布的整个问题的解决方案。
这里是一个伟大的文章:Replace All Method
如果你只想在你的字符串字母,并取代一切有空间,这里是语句:
str2 = str.replaceAll("[^a-zA-z]", " ");
如果你想更换你提到的(不含括号)的字符,请使用:如果你要包括括号
s1 = s1.replaceAll("[^[!,?._'@+]]", " ");
,使用此:
s1 = s1.replaceAll("[^[!,?._'@+\\[\\]]]", " ");
希望这有助于!
空格或任何特殊字符,如![,?。\ _'@ +]将作为分隔符。休息所有字符都是允许的。 – ra1vi2
你想排除[]括号吗? – Spencer4134
使用s1 = s1.replaceAll(“[^ [!,?._'@ +]]”,“”);将删除括号内的字符,并且s1 = s1.replaceAll(“[^ [!,?._'@ + \\\ [\\\]]]]”,“”);也会删除方括号。 – Spencer4134
如果你想只用字母来代替,然后
String x = sequence.replaceAll("[^a-zA-Z] +"," ");
,并用字母和数字
String y = sequence.replaceAll("[^a-zA-Z0-9] +"," ");
看一看Replace()和ReplaceAll()方法
空格或任何特殊字符,如![,?。\ _'@ +]将作为分隔符。休息所有字符都是允许的。 – ra1vi2
首先,我想你的正则表达式缺少一个转义。我想你想在你的表达中加入反斜杠\
,但你必须像这样逃避它:\\
。
此外,正则表达式"![,?.\_'@+] +"
表示要替换一个感叹号!
的组合,它是一个包含,
,?
,.
,\
,_
,'
,@
和+
集合的一部分的任何字符,和一个或多个空间(+
)。
正则表达式[,'?]+
应该完成这项工作。你可以阅读更多关于如何在Regular expressions形成正确的表达。
如果您试图将文本分成单词,那么您不应该将''不是''分成''isn“”t“'。撇号是这个词的一部分。 –