java - 字符串修剪异常
问题描述
嘿伙计们,我有一个奇怪的问题,我想从网站解析频道模板。什么有效:解析文件并从头开始剪切(例如,仅德语频道),但从行尾剪切总是以超出范围的索引 -1 异常结束 不知道为什么。
免责声明:这只是一个虚拟文件,通道不起作用!所以不要除了免费电视或其他东西。
public static void main(String[] args) throws Exception {
{
String url = "http://www.vjackson.info//live/index";
final String USER_AGENT = "VAVOO/1.51";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
final String trimFromLine = "no mather whats in here it dont work";
final String searchKey = "#EXTINF:-1 tvg-name=\"13TH STREET FHD";
String result = "";
// Send post request
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine = "";
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
if (response.toString().contains(searchKey)) {
result=response.toString().substring(response.toString().indexOf(searchKey));
String result2 = result.substring(0, result.indexOf(trimFromLine));
}
}
in.close();
System.out.println(result);
//print result
}
}
}
解决方案
result.indexOf(trimFromLine)
-1
在trimFromLine
中找不到时返回result
。如果您尝试运行String.substring(0, -1)
,您将得到与StringIndexOutOfBoundsException
您所看到的相同的结果。
在尝试调用此方法之前,您应该检查是否是这种情况:
int indexOfTrim = result.indexOf(trimFromLine);
String result2;
if (indexOfTrim > -1) {
result2 = result.substring(0, indexOfTrim);
}
我怀疑result2
分配是导致问题的原因。比较结果,trimFromLine
看看你得到了什么。还要检查result.indexOf(trimFromLine)
.
推荐阅读
- haskell - 如何处理Haskell中递归函数中的侧IO操作?
- stata - 从整数数据创建新变量的语法问题
- javascript - 循环时如何避免 Json Object 中的“null”值
- kotlin - minecraft 织物改装:@Inject 注释找不到任何匹配的目标
- html - Nunjucks 打印宏调用命令而不是标记
- html - 需要 CSS 移动适配帮助(Plotly Dash 应用程序)
- mysql - SQL查询从具有相同日期的列中添加值
- flutter - 使用 SIP_UA 插件与 Flutter 进行 SIP 集成
- c++ - 参数引用适用于 lambda 但不适用于函数
- awk - 递归地从文件中grep每一行