2013-03-29 51 views
1

有一个字符串“早上好”。我想删除字符串开始处的边距(可能不是空格,它可能是换行符),并保留边距的中间和后部。 如何做到这一点?如何去除字符串前面的空白?

+0

其中显示该字符串?即TextView? EditText上? – danielcooperxyz

+0

修剪你的字符串! – hasanghaforian

+1

使用正则表达式。请参阅以下内容:http://www.vogella.com/articles/JavaRegularExpressions/article.html和http://docs.oracle.com/javase/tutorial/essential/regex/ – Luis

回答

1

虽然trim()删除前导尾随空白,只删除前导空格,你需要实现自己的LTRIM方法,如下所示:

public static String ltrim(String s) { 
    int i = 0; 
    while (i < s.length() && Character.isWhitespace(s.charAt(i))) { 
     i++; 
    } 
    return s.substring(i); 
} 

String myString = " whitespace be gone!"; 
String trimmedString = ltrim(myString); 
0
String b=" This is for test " 
for(int i=0;i<=b.length()-1;i++) 
    { 
    char temp=b.charAt(i); 
    if(temp==' ') 
    { 
     whitespaceNumber++; 
    } 
    } 
    System.out.println("Whitespace number is : "+whitespaceNumber); 
+0

这不回答提出的问题。 –

+0

但它非常接近! –

1

一个正则表达式将很好地工作在这里。当一个或多个空白字符(\\ s +)出现在短语(^)的开头时,请将空白字符替换为空白字符。

private static String trimLeading(String value) { 
    return value != null ? value.replaceFirst("^\\s+", "") : null; 
} 

使用JUnit/hamcrest测试一下:

@Test 
public void test() { 
    assertThat(trimLeading("good morning "), is("good morning ")); 
    assertThat(trimLeading(" good morning "), is("good morning ")); 
    assertThat(trimLeading(" good morning "), is("good morning ")); 
    assertThat(trimLeading("\ngood morning "), is("good morning ")); 
    assertThat(trimLeading("\rgood morning "), is("good morning ")); 
    assertThat(trimLeading("\tgood morning "), is("good morning ")); 
    assertThat(trimLeading(" \t \n \r good morning "), is("good morning ")); 
} 
相关问题