我有一个应用程序,我从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;
谢谢!
答案 0 :(得分:9)
您无法修改字符串本身,但您可以轻松地创建子字符串:
line = line.substring(16);
substring
的单参数重载在给定的起始索引之后获取字符串其余部分的整个。双参数重载从第一个参数指定的索引开始,并以第二个参数(独占)指定的索引结束。因此,要在“跳过”前16个字符后获得前三个字符,您可以使用:
line = line.substring(16, 19);
请注意,您不必分配回同一个变量 - 但您需要了解它不会影响您调用它的字符串 object 。所以:
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)
,则会抛出异常。
答案 1 :(得分:0)
试试这个:
String newString = oldString.substring(16);