从大小更改的字符串中检索子字符串

时间:2017-01-25 12:07:54

标签: java string

我有一个字符串"1.3.6.1.2.1.25.1.0.0 = 47"。如何检索方程的RHS部分,"47"?我不能使用substr(StartIndex, EndIndex),因为我的LHS的大小会改变。提前谢谢。

7 个答案:

答案 0 :(得分:5)

只需使用String.indexOf()来首先获取该位置" ="在你的字符串中。

换句话说:大多数情况下,字符串没有固定(基于列)布局;从这个意义上讲:检查字符串中的实际内容是世界上最自然的事情。您可以使用indexOf(),lastIndexOf()等低级方法,或者更进一步使用regular expressions来完成更复杂的工作。

或者,您也可以使用String.split()等方法将输入字符串转换为子字符串数组;基于给定的"拆分"图案。

答案 1 :(得分:3)

无需使用子字符串 RHS也将在“=”之后,因此您可以将字符串从“=”

中分离出来
String string = "1.3.6.1.2.1.25.1.0.0 = 47";
String[] parts = string.split("=");
String LHS= parts[0]; // 1.3.6.1.2.1.25.1.0.0
String RHS= parts[1]; // 47

这样你就可以得到LHS和RHS

最好检查原始字符串是否为null否则会给出nullPointerException

答案 2 :(得分:1)

如果字符串只包含一个等号,则可以将其拆分为两个字符串的数组,然后获取第二个字符串:

String s = "1.3.6.1.2.1.25.1.0.0 = 47";
String rhs = s.split("= ")[1];

答案 3 :(得分:1)

将字符串基础拆分为" ="

str.split("=")[1].trim() will return your RHS part.

答案 4 :(得分:1)

您可以split=作为分隔符使用 echo '<select name="options">'; for($i=1; $i<=100; $i++) { echo "<option value="">".$i."</option>"; } echo '</select>'; echo "<input type=submit value='Add to Basket'>"; 。你将拥有你的LHS和RHS。

答案 5 :(得分:0)

假设你只有一个&#34; =&#34;在字符串中,你可以这样做:

int start = searchString.indexOf("=") + 1;
String lhs = searchString.substring(start).trim();

加上一些错误处理......

答案 6 :(得分:0)

您也可以使用正则表达式:

final String test = "1.3.6.1.2.1.25.1.0.0 = 47";
final String regex = ".*= (.*)";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(test);
while(matcher.find()) {
    System.out.println(matcher.group(1));
}

结果:

47