从以“name:”开头的字符串中获取参数

时间:2015-07-30 12:30:20

标签: java arrays regex string

我有:

String[] args = s.split(" ");

我把它分成了args:

name:

现在我如何从args[2] 开始获取参数注意,我并不是指{{1}},因为名称可能是第5或第4个arg。

4 个答案:

答案 0 :(得分:1)

正则表达式split会在较大的字符串中成功找到它(没有 String s = "IRON_SWORD 1 nme:&aMagic_Iron_Sword lore:&5Magic|is|amazing sharpness:10 hide_enchants"; Pattern p = Pattern.compile("\\sname:(\\S*)"); Matcher m = p.matcher(s); if (m.find()) { String name = m.group(1); } 调用)。

以下是示例代码:

$('[ng-if*="checkout"]').click();

答案 1 :(得分:1)

您可以使用正则表达式。

Pattern p = Pattern.compile("(?<=\\bname:)\\S+");
Matcher m = p.matcher(s);
while(m.find())
{
System.out.println(m.group());
}

答案 2 :(得分:0)

尝试怎么样:

foreach args as find
{
    searched = split (find, ":")
    if searched[0] == 'name' 
    {
         result = searched[1]
    }
}

我不知道你使用的语言,但我相信你能适应。

答案 3 :(得分:0)

我想到了三种方法:

  1. 在您的拆分结果中搜索startsWith()“name”的元素,然后将其拆分并获取索引为1的元素。
  2. 利用String.indexOf()String.substring()确定您正在寻找的内容
  3. 使用regex模式"name:(\\S*) "并将您想要的数据捕获到第1组
  4. 这些方法的例子:

    public static void main(String[] args) throws Exception {
        String query = "IRON_SWORD 1 name:&aMagic_Iron_Sword lore:&5Magic|is|amazing sharpness:10 hide_enchants";
    
        System.out.println(getNameSplit(query));
        System.out.println(getNameSubstring(query));
        System.out.println(getNameRegex(query));
    }
    
    public static String getNameSplit(String query) {
        String[] pieces = query.split(" ");
        for (String piece : pieces) {
            if (piece.startsWith("name")) {
                return piece.split(":")[1];
            }
        }
        return null;
    }
    
    public static String getNameSubstring(String query) {
        int nameIndex = query.indexOf("name:");
        int spaceIndexAfterName = query.indexOf(" ", nameIndex);
        // +5 to skip name:
        return query.substring(nameIndex + 5, spaceIndexAfterName);
    }
    
    public static String getNameRegex(String query) {
        Matcher matcher = Pattern.compile("name:(\\S*) ").matcher(query);
        if (matcher.find()) {
            return matcher.group(1);
        }
        return null;
    }
    

    结果:

    &aMagic_Iron_Sword
    &aMagic_Iron_Sword
    &aMagic_Iron_Sword