解析字符串

时间:2014-06-10 05:23:40

标签: java unix

任何人都可以建议如何解析下面的字符串吗?

Added Active10000000044: {activityId=Active1, schedule=1 22 * * 0, isEnabled=Y, type=global, runAtHost=null}

我希望Active10000000044分开使用下一步...

4 个答案:

答案 0 :(得分:0)

如果您想要“:”的权利,那么您可以使用

String str = "Added Active10000000044: {activityId=Active1, schedule=1 22 * * 0, isEnabled=Y, type=global, runAtHost=null}:";

System.out.println(str.split(":")[1]);

左侧可以使用

找到
System.out.println(str.split(":")[0]);

答案 1 :(得分:0)

可以简单如下:

String str = str.replaceFirst("Added ","").replaceFirst(" .*","");

取决于您是否向我们提供了全套测试数据: - )

如果您想要第二个单词而不考虑第一个单词,您可以尝试:

String str = str.replaceFirst("[^ ]+ +","").replaceFirst(" .*","");

这些建议都依赖于这样的事实:第一个单词前面没有空格,而空格 实际上是空格。任何偏离都需要稍微调整一下。

答案 2 :(得分:0)

试试这个,

String str = "Added Active10000000044: {activityId=Active1, schedule=1 22 * * 0, isEnabled=Y, type=global, runAtHost=null}:";

String[] parts = str.split(":");

String part1 = parts[0]; // value "Added Active10000000044"

String[] SetU_need = part1.split(" ");

String u_need = SetU_need[1]; // value "Active10000000044"

答案 3 :(得分:0)

试试这个

Splitter课程来自Google guava图书馆

    String text = "Added Active10000000044: {activityId=Active1, schedule=1 22 * * 0, isEnabled=Y, type=global, runAtHost=null}:";
    int indexOfOpenBrace = text.indexOf("{");
    int indexOfCloseBrace = text.indexOf("}");
    String valuesAsText = text.substring(indexOfOpenBrace+1, indexOfCloseBrace);
    List<String> splitToList = Splitter.on(",").omitEmptyStrings().splitToList(valuesAsText);
    Map<String, String> map = new HashMap<>();
    for (String keyValues : splitToList) {
        List<String> splitToKeyAndValues = Splitter.on("=").omitEmptyStrings().splitToList(keyValues);
        map.put(splitToKeyAndValues.get(0), splitToKeyAndValues.get(1));
    }
    Set<String> keySet = map.keySet();
    for (String key : keySet) {
        System.out.println(key+":"+map.get(key));
    }

<强>输出

activityId:Active1
schedule:1 22 * * 0
type:global
runAtHost:null
isEnabled:Y