2011-08-05 144 views
1

我有一个应用程序,我从URL中解析.txt文件并将字符串吐出给用户。我想删除字符串的前16个字符。我怎样才能做到这一点?删除字符串中的字符

编辑 - 我想从我的http调用收到的数据中删除16个字符。

public void onClick(View src) { 
     switch(src.getId()) { 
     case R.id.buttonRetrieveMetar: 


      InputMethodManager imm = (InputMethodManager) 
getSystemService(Context.INPUT_METHOD_SERVICE); 

imm.hideSoftInputFromWindow(EditTextAirportCode.getWindowToken(), 0); 


      textDisplayMetar.setText (""); 


      airportcode = EditTextAirportCode.getText().toString(); 
      url = urlmetar + airportcode + ".TXT"; 

      //Added 06-27-11 METAR code 
      textDisplayMetar.setText (""); 

      try { 
       HttpGet httpGet = new HttpGet(url); 
       HttpClient httpclient = new DefaultHttpClient(); 
       // Execute HTTP Get Request 
       HttpResponse response = httpclient.execute(httpGet); 
       content = response.getEntity().getContent(); 
       BufferedReader r = new BufferedReader(new  
InputStreamReader(content)); 
       StringBuilder total = new StringBuilder(); 
       String line; 

       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       textDisplayMetar.append("\n" + total + "\n"); 
        } catch (Exception e) { 
       //handle the exception ! 
      } 


    break; 

谢谢!

回答

9

不能修改字符串本身,但您可以创建一个子很轻松地:

line = line.substring(16); 

substring单参数超负荷发出后取字符串的其余部分的整个开始索引。双参数重载从第一个参数指定的索引开始,到第二个参数指定的索引(独占)结束。因此,要“退出”前16后的前三个字母搞定,你会使用:

line = line.substring(16, 19); 

注意,您不必指定回同一个变量 - 但你要明白,它不不会影响您打电话给它的字符串对象。所以:

String original = "hello world"; 
String secondPart = original.substring(6); 

System.out.println(original); // Still prints hello world 
System.out.println(secondPart); // Prints world 

编辑:如果您要删除整个文件的前16个字符,你想:

textDisplayMetar.append("\n" + total.toString().substring(16) + "\n"); 

如果你想有一个每行的基础上,你想:

while ((line = r.readLine()) != null) { 
    total.append(line.substring(16)); 
} 

注意,这两种可能需要额外的验证 - 如果你有少于16个字符的字符串调用substring(16),就会抛出excepti上。

+0

这是有道理的,可惜我还需要帮助把它的来龙去脉一点点。我将编辑我的原始文章。我想删除我从网址解析的16个字符。 – Slicekick

+0

@Slicekick:从每一行开始,还是从整个文件开始?我已经为后一种情况包含了一个编辑,并且还会包含前一种情况。 –

+0

完成了!感谢您解释它,真的很感激它。我希望有一天能在Google工作。 – Slicekick

0

试试这个:

String newString = oldString.substring(16);