Java 使用 lastindexOf return 特定长度的子串
Java substring using lastindexOf return a specific length
我正在使用 JAVA 并且我有一个名为 example 的字符串,它看起来像;
example = " id":"abcd1234-efghi5678""tag":"abc" "
注意:我没有使用 \ 对 "'s 进行转义,但你明白了..
...我只想 return;
abcd1234
...我一直在尝试使用子字符串
example = (example.substring(example.lastIndexOf("id\":\"")+5));
(因为此字符串可能位于 HTML/JSON 文件中的任何位置) lastIndexOf 所做的所有工作都是找到它,然后将所有内容保留在它之后 - 即它 returns;
abcd1234-efghi5678"tag":"abc"
基本上我需要根据字符串找到 lastIndexOf 并在之后限制它 returns - 我发现我可以像这样执行另一个子字符串命令;
example = (example.substring(example.lastIndexOf("id\":\"")+5));
example = example.substring(0,8);
...但看起来很乱。有没有什么方法可以同时使用 lastIndexOf 和设置最大长度 - 这可能真的很简单,但由于盯着它看了太久,我看不到它。
非常感谢您的帮助!
不要substring
两次。改为使用找到的索引两次:
int idx = example.lastIndexOf("id\":\"");
example = example.substring(idx + 5, idx + 13);
或者,如果长度是动态的,但总是以 -
结尾:
int start = example.lastIndexOf("id\":\"");
int end = example.indexOf('-', start);
example = example.substring(start + 5, end);
在实际代码中,您当然应该始终检查是否找到子字符串,即 idx
/ start
/ end
不是 -1
。
您可以使用正则表达式查找特定的子字符串:
String regex = "^id[^a-z0-9]+([a-zA-Z0-9]+)-.*$";
Matcher p = Pattern.compile(regex).matcher(example);
String result = null;
if (p.matches()) {
result = p.group(1);
}
System.out.println(result); //outputs exactly "abcd1234"
该模式使用匹配 id
后跟非字母数字字符和前面 -
.
的捕获组
我正在使用 JAVA 并且我有一个名为 example 的字符串,它看起来像;
example = " id":"abcd1234-efghi5678""tag":"abc" "
注意:我没有使用 \ 对 "'s 进行转义,但你明白了..
...我只想 return;
abcd1234
...我一直在尝试使用子字符串
example = (example.substring(example.lastIndexOf("id\":\"")+5));
(因为此字符串可能位于 HTML/JSON 文件中的任何位置) lastIndexOf 所做的所有工作都是找到它,然后将所有内容保留在它之后 - 即它 returns;
abcd1234-efghi5678"tag":"abc"
基本上我需要根据字符串找到 lastIndexOf 并在之后限制它 returns - 我发现我可以像这样执行另一个子字符串命令;
example = (example.substring(example.lastIndexOf("id\":\"")+5));
example = example.substring(0,8);
...但看起来很乱。有没有什么方法可以同时使用 lastIndexOf 和设置最大长度 - 这可能真的很简单,但由于盯着它看了太久,我看不到它。
非常感谢您的帮助!
不要substring
两次。改为使用找到的索引两次:
int idx = example.lastIndexOf("id\":\"");
example = example.substring(idx + 5, idx + 13);
或者,如果长度是动态的,但总是以 -
结尾:
int start = example.lastIndexOf("id\":\"");
int end = example.indexOf('-', start);
example = example.substring(start + 5, end);
在实际代码中,您当然应该始终检查是否找到子字符串,即 idx
/ start
/ end
不是 -1
。
您可以使用正则表达式查找特定的子字符串:
String regex = "^id[^a-z0-9]+([a-zA-Z0-9]+)-.*$";
Matcher p = Pattern.compile(regex).matcher(example);
String result = null;
if (p.matches()) {
result = p.group(1);
}
System.out.println(result); //outputs exactly "abcd1234"
该模式使用匹配 id
后跟非字母数字字符和前面 -
.