我需要制作程式,從命令列獲取可選引數。如果有顯示標志,-regex我需要讀取以下正則運算式并將其作為字串保存到程式中。就像是:java Main -regex *.java
我現在的樣子:
public static void main(String[] args)
...
if (args[i].equals("-regex")) {
String myRegex = args[i 1];
System.out.println(myRegex);
i ;
i ;
}
...
但是,當我從檔案夾運行程式時,其中一些檔案file1.java和file2.java,程式列印“file1.java”。我該怎么做才能用“*.java”獲取我的變數?
當我嘗試列印所有引數時,使用:
for (String arg:args) {
System.out.println(arg);
}
它給了我:
-regex
file1.java
file2.java
這讓我得出結論,我需要以不同的方式閱讀引數......
uj5u.com熱心網友回復:
您需要為您使用的外殼程式/終端轉義星號,因為外殼程式在運行 java 應用程式之前執行檔案名擴展。對于bash您可以用反斜杠,這應該通過*.file為args[1]:
java -cp your.jar your.Main -regex \*.file
使用 quote 還可以在某些 shell 中轉義默認檔案擴展,并在使用 Windows CMD.EXE 時進行修復:
java -cp your.jar your.Main -regex "*.file"
uj5u.com熱心網友回復:
在 Java 中,用于string.compareTo(string)比較字串而不是==-operator:
package com.main;
public class Main {
public static void main(String[] args) {
if (args[0].compareTo("-regex") == 0) {
String myRegex = args[1];
System.out.println(myRegex);
}
}
}
uj5u.com熱心網友回復:
您需要將命令列命令用雙 (") 引號括起來,例如:
java Main "-regex *.java"
然后使用這樣的東西:
String myRegex = "";
for (int i = 0; i < args.length; i ) {
if (args[i].startsWith("-regex")) {
String[] commandParts = args[i].split("\\s ");
if (commandParts.length > 1) {
myRegex = commandParts[1];
System.out.println(myRegex);
}
}
}
*.java應用程式啟動時將顯示控制臺。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399304.html
上一篇:有沒有辦法在python中將一個單詞分成相等的部分?
下一篇:sql查詢有困難
