For ex: "__I_love___India___";
在这个字符串中我想完全删除前导和尾随空格,并在java中的字符串中删除多个空格。
即。输出应该是
“I love India
”;
答案 0 :(得分:2)
另一种方法是使用StringTokenizer并将空格作为标记分隔符。读取每个标记并将其写回StringBuilder。
import java.util.*;
class Words
{
/**
* Convenience method.
*/
public static StringBuilder deduplicateSpaces(String text)
{
return deduplicateDelimiters(text, " ");
}
public static StringBuilder deduplicateDelimiters(String text, String delim)
{
StringTokenizer st = new StringTokenizer(text, delim);
StringBuilder sb = new StringBuilder();
boolean firstRun = true;
while (st.hasMoreTokens())
{
sb.append(firstRun? "" : delim) //prevent delimiter on the first token
.append(st.nextToken() ); //append token itself
if (firstRun) { firstRun = false; }
}
return sb;
}
public static void main (String[] args)
{
String textS = " A bbbb ccccc ";
String textU = "____A_____bbbb____ccccc___";
System.out.println(deduplicateSpaces(textS));
System.out.println(deduplicateDelimiters(textU, "_"));
}
}
输出是:
A bbbb ccccc
A_bbbb_ccccc
答案 1 :(得分:2)
方法trim ()
删除前导和尾随空格。为了从字符串的中间删除重复的空格,您可以使用正则表达式。
s2 = s1.replaceAll(" \\ s +","")。trim();
答案 2 :(得分:1)
尝试这个逻辑:
String input = "I love India ";
input = input.trim().replaceAll("\\s+", " ");
这里的想法是使用两个单独的操作来处理开头/结尾的空格和单词之间的空格。我们希望在开头/结尾完全删除空格,而String#trim()
可以很好地删除它。然后,在单词之间只应出现一个空格,并且正则表达式替换处理这种情况。
答案 3 :(得分:1)
您可以尝试以下方法之一:
String after = before.trim().replaceAll("\\s+", " ");
String after = before.replaceAll("\\s{2,}", " ").trim();
String after = StringUtils.normalizeSpace(String str);
答案 4 :(得分:0)
试试replaceAll("\\s{2,}", " ").trim();
其中str是一个String变量,包含要从中去除空白区域的文本,并使用trim用于前导和尾随空格
由于我忘记用一个空格替换多个空格