从字符串中获取长值

时间:2013-05-02 07:44:26

标签: java android regex string replace

感谢您宝贵的时间。我需要在Kr之前爆炸我的字符串并仅获取数字。 (在Java中)

示例String str = "Delhi 205 Kr."

从上面我只需要205作为子串。

另一个问题是,假设我在该字符串中得到另一个数字,那么我再次需要在空格Kr之前使用数字。

示例String str = "India112Delhi 98 Kr."

这里我还需要98而不是112或两者的组合。

如果我有这样的字符串,那么如何只检索值25?

String str =“New Delhi113 25 Kr。”

请帮帮我 提前致谢。

7 个答案:

答案 0 :(得分:1)

使用split函数拆分String,它将为您提供字符串数组。循环遍历它并尝试解析数组中的每个字符串。将解析代码放在try {} catch {}中如果解析成功,则得到您的编号。否则继续循环。

String str = "Delhi 205 Kr.";

String [] values = str.split(“”);

长值= 0;

 for(int i=0; i<values.length; i++)
    {
            try {
                value = Long.parseLong(values[i]);
    break;
            }
        catch(Exception e)
        {}
    }
}
System.out.println(value);

答案 1 :(得分:1)

将此正则表达式用作模式:

(\d+) (K|k)(R|r)\.

Matcher获取第一组的价值。

Pattern pattern = Pattern.compile("(\d+) (K|k)(R|r)\.");
Matcher matcher = pattern.matcher("India112Delhi 98 Kr.");

if (matcher.find()) {
    System.out.println(matcher.group(1));
}

答案 2 :(得分:1)

使用您给出的示例代码(请注意,这仅在您需要从第二位获取单位时才有效)

String str = "Delhi 205 Kr.";
String[] values = str.split(" ");
Long value = Long.parseLong(values[1]);

<强>已更新

String str = "Delhi 205 Kr.";
String[] values = str.split(" ");

Long value=0;
for(int i=1; i<values.length; i++)
{
    if(values[i].equalsIgnoreCase("kr."))
    {
        try {
            value = Long.parseLong(values[i-1]);
        }
        catch(Exception e)
        {
            System.out.println("Not a number before Kr");
        }
    }
}
System.out.println(value);

注意第二个代码将获得'Kr'之前的值。

答案 3 :(得分:0)

使用Guava的一些代码,我选择的Java框架:)

String str = "..."; // input string

int indexOf = str.indexOf("Kr"); // get the index of Kr
String previous = str.substring(0, indexOf); // only get string before kr

// Split string on all non-digits and throw away any empty splits. 
// This leaves you with only numbers
Iterable<String> numbers = Splitters.onPattern("\\D").omitEmptyStrings();
// Get the last of the numbers since this one is next to the Kr.
Long output = Long.parseLong(Iterables.getLast(numbers));

答案 4 :(得分:0)

嘿,感谢所有人,但真实而正确的答案就在这里。我们需要从后面循环

                    String cost= "Nay String   205 Kr.";
                    String[] values = cost.split(" ");
                    Long value=(long) 0;
                    for(int i=values.length; i>0; i--)
                    {
                            try {
                                value = Long.parseLong(values[i]);
                    break;
                            }
                        catch(Exception e)
                        {}
                    }

答案 5 :(得分:0)

这对你有用吗?
String str = "India112Delhi 98 Kr.";

String [] strarray = str.split(" ");

System.out.println(Long.parseLong(strarray[strarray.length-2]));

答案 6 :(得分:-1)

此解决方案仅适用于输入字符串始终采用相同格式的情况。

您可以根据空格分割字符串。

等同于:

string.split('')

对于输入字符串 India112Delhi 98 Kr。,您将获得一个如下所示的数组:

[India112Delhi,98,Kr。]

你的第二个元素永远是你需要的数字!