For ex: "__I_love___India___";
在這個字符串中,我想完全刪除前導和尾隨空格,並在java中的字符串中使用多個空格。如何刪除字符串中的前導字符和尾字符以及多個空格處的空格?
即輸出應該是
「I love India
」;
For ex: "__I_love___India___";
在這個字符串中,我想完全刪除前導和尾隨空格,並在java中的字符串中使用多個空格。如何刪除字符串中的前導字符和尾字符以及多個空格處的空格?
即輸出應該是
「I love India
」;
另一種方法是將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
方法trim()
去除前導和結尾間隔。爲了從字符串中間刪除重複的空格,可以使用正則表達式。
s2 = s1.replaceAll(「\\ s +」,「」).trim();
謝謝Alex。但是dint想要使用內置方法。相反,我想使用用戶定義的方法刪除前導空格 – yashu
試試這個邏輯:
String input = "I love India ";
input = input.trim().replaceAll("\\s+", " ");
這裏的想法是使用兩個單獨的操作在字與字之間的開始/結束和空白處理的空白。我們希望完全刪除開始/結尾處的空白,並且String#trim()
確實很好。然後,在單詞之間只會出現一個空格,而正則表達式替換處理這種情況。
您可以嘗試下列操作之一:
String after = before.trim().replaceAll("\\s+", " ");
String after = before.replaceAll("\\s{2,}", " ").trim();
String after = StringUtils.normalizeSpace(String str);
一個谷歌搜索「 java正則表達式刪除多餘的空格「返回的第一個結果[Java如何替換2或者mo重新使用字符串中的單個空格並刪除前導空格](https://stackoverflow.com/a/2932439/6577822) – fjoe
您可以使用'replaceAll()'將多個空格替換爲單個空格並使用'trim() '擺脫主要和尾隨空間。但請注意在您的問題中使用「請提供代碼」,因爲您不是我們的僱主,我們也不是代碼編寫服務。這往往會讓你低估。我給了你一些強烈的暗示,現在去查看javadoc並自己完成其餘的工作。 – ajb
@fjoe請注意,如果我想刪除前導空格和尾部空格,並發現Google命中「只刪除前導空格」,我可能不會看到這個問題。事實證明給出了正確的答案,但該問題的海報玷污了標題。 – ajb