【问题标题】:Java string contains substringJava 字符串包含子字符串
【发布时间】:2021-06-03 18:19:39
【问题描述】:

java 代码检查字符串是否包含子字符串以及子字符串在带有索引的字符串中重复了多少次

void main() {
    int a = 0, b = 0; float b;
    cout << ;
}

想把这个例如代码分成它的子字符串,例如

{"void","main","(",")","{"}

【问题讨论】:

  • 您是在问如何按空格分割输入内容?听起来您使用的术语 substring 不正确。
  • 如果我的代码中没有空格,例如 int main() 那么如何拆分它
  • 也许使用regex。空白包括空格、制表符、回车符和换行符。你的问题是如何用一些任意字符分割一些文本?或者您是在问如何查找和计算重复的非空白符号?有点不清楚。

标签: java arrays arraylist


【解决方案1】:

要将输入字符串分成“片段”,最好使用正则表达式匹配所需部分,然后将结果收集到列表中。

正则表达式的模式可能是:\\w+|[(){}]——它检测“单词”(例如,保留字、整数、变量名)和每个括号或大括号;空格、标点符号(逗号、分号、等号= 等)将被忽略。

import java.util.*;
import java.util.regex.*;
import java.util.stream.*;

public class MyClass {
    public static void main(String[] args) {
        Pattern pat = Pattern.compile("\\w+|[(){}]");
        
        String code = "void main() {\n\tint a = 0, b = 0; float b;\n\t    cout << ;\n}";
        
        List<String> parts = pat.matcher(code)
                                .results().map(MatchResult::group)
                                .collect(Collectors.toList());
        System.out.println(parts);
    }
}

输出:

[void, main, (, ), {, int, a, 0, b, 0, float, b, cout, }]

【讨论】:

    【解决方案2】:

    你可以在 while 循环中使用 indexOf() 和子字符串

    【讨论】:

    • 我想把字符串分解成碎片,例如int main() 在这里我可以使用按空格分割将 int 和 main 转换为子字符串,但是我如何分隔(使用 main
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2016-11-20
    • 2020-11-28
    • 2011-11-09
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多