如何在Java中搜索字符串中的子字符串,直到找到指定的字符为止?

如何在Java中搜索字符串中的子字符串,直到找到指定的字符为止?,java,Java,例如,让我们看一个字符串 {“你好”:“世界”} 还有一根绳子 {“你好”:“你好”} 我想在冒号(:)之前的第一个字符串中搜索hello 但我的代码是查找并返回具有指定查询字符串的字符串,而不是仅在冒号之前具有查询字符串的字符串,即左侧部分 这里的列表包含字符串列表 for(int i = 0; i < list.size; i++) { if(list.get(i).contains(query)) list.remove(i); } for(int i=0;i

例如,让我们看一个字符串 {“你好”:“世界”}

还有一根绳子 {“你好”:“你好”}

我想在冒号(:)之前的第一个字符串中搜索hello

但我的代码是查找并返回具有指定查询字符串的字符串,而不是仅在冒号之前具有查询字符串的字符串,即左侧部分

这里的列表包含字符串列表

for(int i = 0; i < list.size; i++)
{
if(list.get(i).contains(query))
list.remove(i);
}
for(int i=0;i

这意味着它将查找第一个出现的字符串,该字符串包含指定的查询,但在指定的字符出现之前不会找到该字符串。如果该字符串是JSON文件的一部分,则应使用JSON解析器。如果没有,您可以按如下方式使用Java正则表达式API:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String input = "{\"hello\":\"world\"}";
        Matcher matcher = Pattern.compile("\\w+(?=.*:)").matcher(input);
        if (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
输出:

hello
正则表达式的解释:

hello
  • \w+
    指定一个或多个
  • (?=*:)
    *:
    指定,其中
    *
    指定任意字符数。
    指定任何字符,并且
    *
    用作、零次或多次
  • 指定字符文字,

  • 如果字符串是JSON文件的一部分,则应使用JSON解析器。如果没有,您可以按如下方式使用Java正则表达式API:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Main {
        public static void main(String[] args) {
            String input = "{\"hello\":\"world\"}";
            Matcher matcher = Pattern.compile("\\w+(?=.*:)").matcher(input);
            if (matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }
    
    输出:

    hello
    
    正则表达式的解释:

    hello
    
  • \w+
    指定一个或多个
  • (?=*:)
    *:
    指定,其中
    *
    指定任意字符数。
    指定任何字符,并且
    *
    用作、零次或多次
  • 指定字符文字,

  • 为什么不使用JSON库解析JSON字符串?如果您试图读取JSON,是否尝试过使用JsonPath之类的库?这可能会使事情变得更简单,因为这些字符串存储在一个文本文件中,该文件将采用stringsJSON的形式,因此它通常作为字符串检索,您可以将其解析为JSON以获取对象(或数组或原语)。如果你想要一个类比,想象你正在读一个包含数字的文件。当然,您首先要阅读一个字符串,但是将它转换为numberd的相关子类会更有帮助。这是否回答了您的问题?为什么不使用JSON库解析JSON字符串?如果您试图读取JSON,是否尝试过使用JsonPath之类的库?这可能会使事情变得更简单,因为这些字符串存储在一个文本文件中,该文件将采用stringsJSON的形式,因此它通常作为字符串检索,您可以将其解析为JSON以获取对象(或数组或原语)。如果你想要一个类比,想象你正在读一个包含数字的文件。当然,您首先要阅读一个字符串,但是将它转换为numberd的相关子类会更有帮助。这是否回答了您的问题?我明白了,但假设有一个字符串列表,如果我想在列表元素中搜索一个子字符串并执行上面的操作,我该怎么做?@初学者-在这种情况下,您只需要将整个内容放入循环中,迭代列表,即(字符串输入:列表){Matcher Matcher=Pattern.compile(\\w+(?=*:)).matcher(input);if(matcher.find()){System.out.println(matcher.group());}
    我明白了,但假设有一个字符串列表,如果我想在列表元素中搜索一个子字符串并执行上面的操作,我该怎么做?@noveler-在这种情况下,您只需要将整个内容放入循环中,迭代列表,即(字符串输入:列表){Matcher Matcher=Pattern.compile(\\w+(?=*:))”).Matcher(输入);if(Matcher.find()){System.out.println(Matcher.group());}