String weapon = "pistol . <1/10>";
Result:
int clip = 1;
int ammo = 1;
文字列の形式 = (WEAPON) 。<(CLIP)/(AMMO)>
そして、Clip と Ammo の値が必要です。
では、文字列のこれら 2 つの値を抽出するにはどうすればよいでしょうか。「/」で分割できますが、「銃 <1」と「10>」の面が残るため、
よろしくお願いします。
次のように、数字以外の文字を削除できます。
String s = "pistol . <1/10>";
String[] numbers = s.replaceAll("^\\D+","").split("\\D+");
今numbers[0]
は1
そしてnumbers[1]
です10
。
s.replaceAll("^\\D+","")
文字列の先頭にある数字以外の文字を削除するため、新しい文字列は次のようになります"1/10>"
.split("\\D+")
数字以外の文字 (この場合は/
and >
) で分割し、末尾の空の文字列があれば無視しますまたは、形式が常に質問で述べたとおりである場合は、その特定のパターンを探すことができます。
private final static Pattern CLIP_AMMO = Pattern.compile(".*<(\\d+)/(\\d+)>.*");
String s = "pistol . <1/10>";
Matcher m = CLIP_AMMO.matcher(s);
if (m.matches()) {
String clip = m.group(1); //1
String ammo = m.group(2); //10
}
これも試すことができます...
文字列 "(WEAPON) . <(CLIP)/(AMMO)>" から値 WEAPON、CLIP、AMMO を抽出する
String str = "(WEAPON) . <(CLIP)/(AMMO)>";
Pattern pattern = Pattern.compile("\\((.*?)\\)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
System.out.println(matcher.group(1));
}
文字列 "pistol . <1/10>" から値 1、10 を抽出する:
List<String[]> numbers = new ArrayList<String[]>();
String str = "pistol . <1/10>";
Pattern pattern = Pattern.compile("\\<(.*?)\\>");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
numbers.add(matcher.group(1).split("/"));
}
String weapon = "pistol . <1/10>";
String str = weapon.substring(weapon.indexOf("<")+1,weapon.indexOf(">")); // str = "<1/10>"
int clip = Integer.parseInt(str.substring(0,str.indexOf("/"))); // clip = 1
int ammo = Integer.parseInt(str.substring(str.indexOf("/")+1)); // ammo = 10
クリップ = 1
弾薬 = 10
終わり..
String weapon = "pistol . <1/10>";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(weapon);
List<Integer> numbers = new ArrayList<Integer>();
while (m.find()) {
numbers.add(Integer.parseInt(m.group()));
}
System.out.println("CLIP: " + numbers.get(0));
System.out.println("AMMO: " + numbers.get(1));
そして、結果の部分文字列をそれぞれ "<" (銃 <1) と ">" (10>) で分割します。
このようなものを試すことができます。
public static void main(String[] args) {
String weapon = "pistol . <1/10>";
String test = "";
Pattern pattern = Pattern.compile("<.*?>");
Matcher matcher = pattern.matcher(weapon);
if (matcher.find())
test = matcher.group(0);
test = test.replace("<", "").replace(">", "");
String[] result = test.split("/");
int clip = Integer.parseInt(result[0]);
int ammo = Integer.parseInt(result[1]);
System.out.println("Clip value is -->" + clip + "\n"
+ "Ammo value is -->" + ammo);
}
出力:
Clip value is -->1
Ammo value is -->10