-1

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

例子String str = "Delhi 205 Kr."

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

另一个问题是,假设我在该字符串中得到另一个数字,然后我只需要空格 Kr 之前的数字。

例子String str = "India112Delhi 98 Kr."

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

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

字符串 str = "New Delhi113 25 Kr."

请帮助我 提前谢谢。

4

7 回答 7

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”之前的值。

于 2013-05-02T07:53:23.593 回答
1

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

String str = "Delhi 205 Kr.";

字符串[] 值 = 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);
于 2013-05-02T07:50:08.573 回答
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));
}
于 2013-05-02T07:52:01.417 回答
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)
                        {}
                    }
于 2013-05-02T08:26:58.863 回答
0

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

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

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

于 2013-05-02T09:15:25.267 回答
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));
于 2013-05-02T07:57:19.720 回答
-1

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

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

相当于:

string.split('')

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

[印度112德里, 98, Kr.]

您的倒数第二个元素始终是您需要的数字!

于 2013-05-02T07:50:22.760 回答