我有一个包含此内容的Java字符串:
Response: Success
Message: Extension Status
Exten: 1234
Context: from-sip
Hint: DS/5678
Status: 9
Run Code Online (Sandbox Code Playgroud)
我想搜索这个字符串键"Exten:"和"Status:",并获取相应的值,即"1234"和"9".这样做的最佳方法是什么?
您可以使用正则表达式来获取它们(Pattern类,MULTILINE标志flor简单):
import java.util.regex.*;
public class RegexStrings {
public static void main(String[] args) {
String input = "Response: Success\n"+
"Message: Extension Status\n"+
"Exten: 1234\n"+
"Context: from-sip\n"+
"Hint: DS/5678\n"+
"Status: 9";
String exten = null;
String status = null;
Matcher m = Pattern.compile("^Exten: (.+?)$", Pattern.MULTILINE).matcher(input);
if (m.find()) {
exten = m.group(1);
}
Matcher m2 = Pattern.compile("^Status: (.+?)$", Pattern.MULTILINE).matcher(input);
if (m2.find()) {
status = m2.group(1);
}
System.out.println("Exten: "+exten);
System.out.println("Status: "+status);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Exten: 1234
Status: 9
Run Code Online (Sandbox Code Playgroud)
如果您的字符串具有固定格式,您可以使用组合String#substring(),这可能更容易掌握:
public static void main(String[] args) {
String input = "Response: Success\n"+
"Message: Extension Status\n"+
"Exten: 1234\n"+
"Context: from-sip\n"+
"Hint: DS/5678\n"+
"Status: 9";
String exten = input.substring(input.indexOf("Exten: ")+"Exten: ".length(), input.indexOf("Context: ")).trim();
String status = input.substring(input.indexOf("Status: ")+"Status: ".length(),input.length()).trim();
System.out.println("Exten: "+exten);
System.out.println("Status: "+status);
}
Run Code Online (Sandbox Code Playgroud)
(输出相同)
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |