2013-07-09 49 views
1

我有一個字符串在其開頭有多個空格。如何多次執行if行,直到滿足某個條件爲止

String str = " new york city"; 

我只想要刪除第一個字符之前的空格,所以replaceAll不起作用。

我有這行代碼

if (str.startsWith(" ")){ 
    str = str.replaceFirst(" ", "");   } 

這刪除空間,但不是全部。所以,我需要這條線被執行,直到

!str=startswith(" ")) 

我認爲這可以通過一個循環來實現,但是我對循環非常陌生。我怎樣才能做到這一點?

預先感謝您。

+4

'while或'do ... while'。如果你打算做任何真正的編程,你需要熟悉這兩者。 –

+0

這應該做'測試'。replaceAll(「^ \\ s +」,「」);'。你也可以用'toCharAray()'遍歷一個'char []'並且處理單個字符。真的有很多答案。 –

回答

0

使用trim()將刪除起始和結束空格。但是,由於您要求刪除起始空格,下面的代碼可能會有所幫助。

public String trimOnlyLeadingSpace() 
    { 
    int i = this.count; 
    int j = 0; 
    int k = this.offset; 
    char[] arrayOfChar = this.value; 
    while ((j < i) && (arrayOfChar[(k + j)] <= ' ')) 
     ++j; 
    return (((j > 0) || (i < this.count)) ? substring(j, i) : this); 
    } 
+0

修剪完美。但感謝多產的答案! –

+0

'count'和'offset'是什麼?看起來你寫了這個方法被放入'String'類本身,這是沒有意義的。 – arshajii

+0

不確定實現有多大意義(修剪絕對是最好的方法)。沒有任何「this」的指示,因此不知道「this.count」和「this.offset」和「this.value」是什麼意思......我從Java的編碼風格來看它可能不是作家的主要語言。 – gnomed

0

你可以這樣做:

//str before trim = " new your city" 
str = str.trim(); 
//str after = "new york city" 
+1

OP:「我只想要刪除第一個字符之前的空格......」 –

+0

@AndyThomas我確定他的意思是說他不想替換單詞之間的空格。 – SOfanatic

2

您也可以使用此:

s.replaceAll("^\\s+", ""); // will match and replace leading white space 
0

你可以改變ifwhile

while (str.startsWith(" ")){ 
    str = str.replaceFirst(" ", ""); 

另一種選擇是利用番石榴的CharMatcher,它僅支持修剪開始,或僅支持結束。

str = CharMatcher.is(' ').trimLeadingFrom(str); 
2

replaceFirst需要一個正則表達式,所以你要

str = str.replaceFirst("\\s+", ""); 

簡單得很。

+0

爲什麼downvote? – arshajii

+1

如果沒有前導空間,則不正確。 '''紐約市'.replaceFirst(「\\ s +」,「」)==「紐約市」' – iamnotmaynard

+0

@iamnotmaynard *「我有一個字符串,在其開頭有多個空格。」* – arshajii

0

快速谷歌搜索帶來了一個網頁與兩個基本循環的簡單概述,同時和do-while:

http://www.homeandlearn.co.uk/java/while_loops.html

在你的情況,你想用一個「while」類型循環,因爲你想在進入循環之前檢查條件。因此,這將是這個樣子:

while (str.startsWith(" ")){ 
    str = str.replaceFirst(" ", ""); 
} 

您應該確保有像「串」(只是一個空格)和「」(空字符串),以測試該代碼,因爲我不能完全肯定當輸入字符串爲空時,startsWith()的行爲如何。

學習循環將是非常必要的 - 至少,如果您的計劃涉及的不僅僅是通過一門編程課程而不是您真正想要學習的課程。 (如果你認爲「while」循環比較複雜,請等到你遇到「for」!)

相關問題