![](/img/trans.png)
[英]Java String.replaceFirst() that takes a “starting from” argument
[英]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]
}
}
我不知道您使用的是哪種語言,但我相信您會適應。
我想到了三種方法:
startsWith()
“ name”的元素,然后拆分並在索引1處獲取該元素。 String.indexOf()
和String.substring()
精確找到您要的內容 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.