解决字符串值的最佳方法

时间:2017-07-31 09:54:42

标签: java string

我有一个字符串模式如下:

{a:yyyyMMddHHmmssSSSS}_{b:name}_{c:F}

我必须获得与abc相对应的值。

这是在java中执行此操作的最佳方法。

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式来提取此信息,例如,您可以使用\{[a-z]:(.*?)\}表示在open { followed by any character followed by :和关闭}之间获取任何内容,您可以使用:

String str = "{a:yyyyMMddHHmmssSSSS}_{b:name}_{c:F}";
String regex = "\\{[a-z]:(.*?)\\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);

while (matcher.find()) {                                                
    System.out.println(matcher.group(1));
}

<强>输出

yyyyMMddHHmmssSSSS
name
F

regex demo

答案 1 :(得分:0)

你可以使用正则表达式(也许修改它更适合你):

String testString= "{1:201707311304}{2:name}{3:F}";
String regex = "\{(\w+):\w+\}\{(\w+):\w+\}\{(\w+):\w+\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(testString);
if (matcher.matches()) {
    String a = matcher.group(1);
    String b = matcher.group(2);
    String c = matcher.group(3);
    System.out.println("a = " + a + ", b = " + b + ", c = " + c);
}

答案 2 :(得分:0)

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

public class Main {
    public static void main(String[]args){
        String input = "{a:yyyyMMddHHmmssSSSS}_{b:name}_{c:F}";
        Pattern p = Pattern.compile("\\{([a-z]):(.*?)\\}");
        Matcher m = p.matcher(input);
        while (m.find()) {
            String name = m.group(1);
            String value = m.group(2);
            System.err.println( name + "=[" + value + "]");
        }
    }
}