簡體   English   中英

從以“ name:”開頭的字符串中獲取參數

[英]Get argument from string starting with “name:”

我有:

String query = IRON_SWORD 1 name:&aMagic_Iron_Sword lore:&5Magic|is|amazing sharpness:10 hide_enchants

我將其拆分為args:

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

現在如何獲取以name:開頭的參數name: 注意,我的意思不是以args[2]開頭, 因為名稱可以是第5或第4個arg。

正則表達式\\sname:(\\S*)將在較大的字符串中成功找到它(無需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);
    }

您可以使用正則表達式。

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

嘗試一下:

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

我不知道您使用的是哪種語言,但我相信您會適應。

我想到了三種方法:

  1. 在拆分結果中搜索startsWith() “ name”的元素,然后拆分並在索引1處獲取該元素。
  2. 利用String.indexOf()String.substring()精確找到您要的內容
  3. 使用regex模式"name:(\\\\S*) "並將所需的數據捕獲到組1中

這些方法的示例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM