首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java在另一个字符串中检查一个字符串

Java在另一个字符串中检查一个字符串
EN

Stack Overflow用户
提问于 2018-08-31 08:45:07
回答 1查看 86关注 0票数 1

我正在通过冰接收无线电播放器中的信号。

下面是一个简短的示例,说明这是如何实现的:

代码语言:javascript
复制
die neue welle - Der beste Musikmix aus 4 Jahrzehnten! - WELSHLY ARMS - SANCTUARY - Der Mehr Musik-Arbeitstag mit Benni Rettich  

元信息流的另一个例子是:

代码语言:javascript
复制
SWR1 Baden Württemberg

代码语言:javascript
复制
Welshly Arms - Sanctuary

现在我需要从那里提取标题,问题是这个‘元信息’字符串可以有任何格式。据我所知:

-I知道完整的元信息字符串,如第一个代码部分所示。

-I知道车站名称,它是由另一个冰冷的属性传递的。

第一种方法是检查字符串是否包含站点名称(我认为如果不是,它必须是标题):

代码语言:javascript
复制
private boolean icyInfoContainsTitleInfo() {
    String title = id3Values.get("StreamTitle"); //this is the title string
    String icy = id3Values.get("icy-name");  //this is the station name

    String[] titleSplit = title.split("\\s");
    String[] icySplit = icy.split("\\s");

    for (String a : titleSplit) {
        StringBuilder abuilder = new StringBuilder();
        abuilder.append(a);
        for (String b : icySplit) {
            StringBuilder builder = new StringBuilder();
            builder.append(b);
            if (builder.toString().toLowerCase().contains(abuilder.toString().toLowerCase())) {
                return false;
            }
        }
    }
    return true;
}

但是,如果标题和位置都出现在标题字符串中,这对我没有帮助。

是否有一个模式可以匹配一个字符串,后面是斜杠、反斜杠还是连字符,然后是另一个字符串?

有人遇到过类似的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 09:18:35

因为您没有规范,而且每个站点都可以发送不同的格式。我不会试图找到一个“完美”的模式,而只是创建一个映射来存储每个站点的格式regex以恢复标题。

首先,创建一个地图

代码语言:javascript
复制
Map<String, String> stationPatterns = new HashMap<>();

他们,插入一些你知道的模式

代码语言:javascript
复制
stationPatterns.put("station1", "(.*)");
stationPatterns.put("station2", "station2 - (.*)");
...

然后,您只需要得到这个模式(在那里,您总是可以找到一个捕获组)。

代码语言:javascript
复制
public String getPattern(String station){
    return stationPatterns.getOrDefault(station, "(.*)"); //Use a default value to get everything)
}

这样,您只需要获得一个模式就可以从String中提取标题。

代码语言:javascript
复制
Pattern pattern = Pattern.compile(getPattern(stationSelected));
Matcher matcher = pattern.matcher(title);
if (matcher.find()) {
    System.out.println("Title : " + matcher.group(1));
} else {
    System.err.println("The title doesn't match the format");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52111697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档