java - 如何使用java中的useDelimeter从字符串中获取两个特定值?

标签 java

我试图从“line”字符串中获取两个玩家值,并使用正则表达式将它们插入到player1和player2中。

   try (BufferedReader in = new BufferedReader(new FileReader(file))) {

        String line;
        String player1;
        String player2;

        while ((line = in.readLine()) != null) {
            Scanner input = new Scanner(line);

            input.useDelimiter("(.* [a-z] )|\\sby ");

            if(line.toLowerCase().contains("kill")) {
                kill +=  1;

                //i would like to set the player1 and player2 here
            }                   
        }      
    }

我的文件片段(.txt):

 13:37 Kill: 3 4 7: Oootsimo killed Dono da Bola by MOD_ROCKET_SPLASH
 13:37 Item: 5 weapon_rocketlauncher
 13:39 Item: 6 weapon_rocketlauncher
 13:40 Item: 7 ammo_rockets
 13:41 Item: 6 weapon_rocketlauncher
 13:41 Item: 4 weapon_rocketlauncher
 13:43 Kill: 2 5 6: Isgalamido killed Assasinu Credi by MOD_ROCKET
 13:45 Kill: 1022 7 22: <world> killed Mal by MOD_TRIGGER_HURT
 13:46 Kill: 4 3 7: Dono da Bola killed Oootsimo by MOD_ROCKET_SPLASH
 13:46 Kill: 6 2 6: Zeh killed Isgalamido by MOD_ROCKET

最佳答案

我不知道您的所有要求,但尝试使用正则表达式:

@Test
public void test()
{
    String string = "13:46 Kill: 6 2 6: Zeh killed Isgalamido by MOD_ROCKET";
    String regexp = "\\d+:\\d+ .*?([A-Za-z0-9]+) killed ([A-Za-z0-9]+).*?";
    String player1 = null;
    String player2 = null;

    Pattern p = Pattern.compile(regexp);

    Matcher m = p.matcher(string);

    if (m.find())
    {
        player1 = m.group(1);
        player2 = m.group(2);
    }

    assertEquals("Zeh", player1);
    assertEquals("Isgalamido", player2);
}

说明: \d+ - 一个数字,一次或多次

.* - 任意字符,任意次数。这 '?'表示“非贪婪”,因此匹配以下表达式的字符不会被过度使用

([A-Za-z0-9]+) - '[]' 内的字符范围,一次或多次,捕获

一旦我确认这就是你的意思,我会再次编辑我的答案

关于java - 如何使用java中的useDelimeter从字符串中获取两个特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52228350/

相关文章:

java - 通过滑动切换到另一个 Activity 不起作用

java - 从网页源读取随机失败 - Java

java - Maven编译找不到src/main/resources目录

java - 控制结构,重复练习: How to get the sum of the digits of a number?

java - 如何在列表框中添加多列?

java - 如何将 @Entity 和 @XmlRootElement 组合在一个类中

java - OBIEE 12c 调用 java 方法。找不到EJB和方法

java - 比较两个数字字符串值

java - 如何将 Http 请求参数的值检索到 Servlet 中?