Java 从字符串中删除字符
我有一个应用程序,在其中我从URL解析一个.txt文件,并向用户吐出字符串。我想删除字符串的前16个字符。我该怎么做 编辑-我想从http调用接收的数据中删除16个字符Java 从字符串中删除字符,java,android,string,character,Java,Android,String,Character,我有一个应用程序,在其中我从URL解析一个.txt文件,并向用户吐出字符串。我想删除字符串的前16个字符。我该怎么做 编辑-我想从http调用接收的数据中删除16个字符 public void onClick(View src) { switch(src.getId()) { case R.id.buttonRetrieveMetar: InputMethodManager imm = (InputMethodManager) g
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;
谢谢 您不能修改字符串本身,但可以很容易地创建子字符串:
line = line.substring(16);
substring
的单参数重载将获取给定开始索引后字符串的全部剩余部分。双参数重载从第一个参数指定的索引开始,到第二个参数指定的索引结束(独占)。因此,要获得“跳过”前16个字符后的前三个字符,您可以使用:
line = line.substring(16, 19);
请注意,您不必重新分配给同一个变量,但您需要了解它不会影响调用它的string对象。因此:
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));
}
如果您希望以每行为基础,您需要:
textDisplayMetar.append("\n" + total.toString().substring(16) + "\n");
while ((line = r.readLine()) != null) {
total.append(line.substring(16));
}
请注意,这两种情况都可能需要额外的验证-如果您对少于16个字符的字符串调用
子字符串(16)
,它将抛出异常。您不能修改字符串本身,但您可以非常轻松地创建子字符串:
line = line.substring(16);
substring
的单参数重载将获取给定开始索引后字符串的全部剩余部分。双参数重载从第一个参数指定的索引开始,到第二个参数指定的索引结束(独占)。因此,要获得“跳过”前16个字符后的前三个字符,您可以使用:
line = line.substring(16, 19);
请注意,您不必重新分配给同一个变量,但您需要了解它不会影响调用它的string对象。因此:
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));
}
如果您希望以每行为基础,您需要:
textDisplayMetar.append("\n" + total.toString().substring(16) + "\n");
while ((line = r.readLine()) != null) {
total.append(line.substring(16));
}
请注意,这两种方法都可能需要额外的验证-如果对少于16个字符的字符串调用子字符串(16)
,它将引发异常。尝试以下方法:
String newString = oldString.substring(16);
试试这个:
String newString = oldString.substring(16);
这是有道理的,不幸的是,我仍然需要一点帮助把它放到上下文中。我将编辑我原来的帖子。我想从url解析的内容中删除16个字符。@Slicekick:从每一行,还是从整个文件的开头?我已经包括了后一个案例的编辑,也将包括前一个案例。完成了!谢谢你的解释,非常感谢。我希望有一天能在谷歌工作。这是有道理的,不幸的是,我仍然需要一点帮助,把它放到上下文中去。我将编辑我原来的帖子。我想从url解析的内容中删除16个字符。@Slicekick:从每一行,还是从整个文件的开头?我已经包括了后一个案例的编辑,也将包括前一个案例。完成了!谢谢你的解释,非常感谢。我希望有一天能在谷歌工作。