[英]Get from String the first value with random digits
在我的应用程序中,我收到这样的字符串:
String1 = "[6, I.3, Contaminación Mecánica, 0.0, 0.0, 0.0, 196.875, 0.0, 196.875]";
String2 = "[16, E.19, Errores de los usuarios, 0.0, 0.0, 3281.25, 0.0, 0.0, 3281.25]";
从这个字符串,我只需要第一个值(来自String1和String2)。 通过以下代码可以解决此问题,您可以在其中获得前两位数字:
String Amenaza = InformeAmenazasAGR.get(i).toString();
Amenaza = Amenaza.substring(1,3);
Amenaza = Amenaza.replace(",","");
现在我也可以收到这个字符串
String3 = "[39854, R.01, Robo Outdoor, 0.0, 84000.0, 24500.0, 24500.0, 0.0, 133000.0]";
我尝试使用
String Amenaza = InformeAmenazasAGR.get(i).toString();
Amenaza = Amenaza.substring(1,6);
Amenaza = Amenaza.replace(",","");
但是当第一个值只有一位数字时,获取第二个值的字符,并且此代码可以超过5位数字。 如果我有一个随机的数字,我怎么才能只获得第一个值?
先感谢您。
使用substring / indexOf(如果您问我的话,最好的方式)
String firstNumber = string1.substring(1, s1.indexOf(','));
第一个参数( 1
)确保你不包括[
字符,第二个参数是第一的指标,
字符。
使用正则表达式(如果要泛化它以包含其他数字,则很有用
Pattern p = Pattern.compile("\\[(\\d+),");
Matcher m = p.matcher(s1);
m.find();
System.out.println(m.group(1));
请注意,模式对象可以重用于多个数字提取。
关于split
警告:字符串看起来很长,您只对其中的一小部分感兴趣。 split所做的是返回原始字符串的视图,因此您的程序仍保留大字符串。 如果对大量字符串执行此操作,则可能会在内存中遇到不必要的内存问题。
用户正则表达式来查找您的第一个数字序列。
例如:
String[] input = {
"[6, I.3, Contaminación Mecánica, 0.0, 0.0, 0.0, 196.875, 0.0, 196.875]",
"[16, E.19, Errores de los usuarios, 0.0, 0.0, 3281.25, 0.0, 0.0, 3281.25]",
"[39854, R.01, Robo Outdoor, 0.0, 84000.0, 24500.0, 24500.0, 0.0, 133000.0]"
};
// | preceded by start of input and open square bracket
// | | digit sequence of any length (1+ characters)
Pattern p = Pattern.compile("(?<=^\\[)\\d+");
// iterating various inputs
for (String s: input) {
// matching
Matcher m = p.matcher(s);
if (m.find()) {
// printing out match
System.out.println(m.group());
}
}
产量
6
16
39854
您可以分割字符串并获取第一个元素。 别忘了也删除[
字符:
String String1 = "[6214, I.3, Contaminación Mecánica, 0.0, 0.0, 0.0, 196.875, 0.0, 196.875]";
String[] split = String1.split(",");
System.out.println(split[0].replace("[", ""));
这种方法很清楚,并且可以自我解释(让我了解输入字符串的第一个元素),当您希望保留对拆分后的字符串的引用以进行进一步访问时,此方法非常有用。 如果只考虑获取第一个元素,我也建议使用子字符串方法:
String firstElem = String1.subString(1 , String1.indexOf(','));
除非您要处理许多字符串(超过几百万),否则您不应该考虑内存消耗。
尝试这个:
String String1 = "[645245, I.3, Contaminación Mecánica, 0.0, 0.0, 0.0, 196.875, 0.0, 196.875]";
String[] splitdata = String1.split(",");
System.out.println(splitdata[0].replaceAll("[^a-zA-Z0-9., ]", ""));
希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.