如何从包含文字和数字的逐行文字文件中选择数字?
例如:
[10] begin0-1-selp-2-yelp-25-jelp-21-hi-35-ou
我希望在没有0 1 2 25 21 35
的情况下打印[10]
。但我一直在10012252135
。
这是我的代码
try {
Scanner scan = new Scanner(file);
while (scan.hasNextLine()) {
String i = scan.nextLine();
String final_string = "";
for (int j = 0; j < i.length(); j++) {
char myChar = i.charAt(j);
if (Character.isDigit(myChar)) {
final_string = final_string.concat(Character.toString(myChar));
}
}
System.out.println(final_string);
}
scan.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
test_2.0
我做了一个正则表达式我不能使它成为一行,但输出是病态的。 OutPut
master
答案 1 :(得分:1)
我喜欢Reaz Murshed的回答, 但是,如果你有多个数字出现在&#34; []&#34;你可以通过记住你当前是否只是一个封闭的范围来过滤那些:
char NON_NUMERIC_SCOPE_START = '[';
char NON_NUMERIC_SCOPE_END = ']';
try {
Scanner scan = new Scanner(file);
while (scan.hasNextLine()) {
String i = scan.nextLine();
String final_string = "";
boolean possibleNumericScope = true;
for (int j = 0; j < i.length(); j++) {
char myChar = i.charAt(j);
if (myChar == NON_NUMERIC_SCOPE_START) {
possibleNumericScope = false;
} else if (myChar == NON_NUMERIC_SCOPE_END && !possibleNumericScope) {
possibleNumericScope = true;
} else if (Character.isDigit(myChar) && possibleNumericScope) {
final_string = final_string.concat(Character.toString(myChar));
}
}
System.out.println(final_string);
}
scan.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
我认为第一部分是行号,可以通过空格分割String i = "[10] begin0-1-selp-2-yelp-25-jelp-21-hi-35-ou";
String final_string = "";
// Split the String with space to remove the first portion which
// might be indicating the line number or something like that.
String[] splittedArray = i.split(" ");
// Then just run the loop in the second item of the split
// `String` array.
int contCount = 0;
for (int j = 0; j < splittedArray[1].length(); j++) {
char myChar = splittedArray[1].charAt(j);
if (Character.isDigit(myChar)) {
contCount = 0;
final_string = final_string.concat(Character.toString(myChar));
} else {
if (contCount == 0)
final_string = final_string + " ";
contCount++;
}
}
System.out.println(final_string);
来轻松省略。请尝试以下代码。
string NaamG = Convert.ToString(Session["GNaamp"]);
if (NaamG.Text = "User1")
{
}
答案 3 :(得分:0)
我在循环之前添加了一行来摆脱[line-number]:
i = i.substring(i.indexOf("]")+1);
for (int j = 0; j < i.length(); j++) {
这应该可以解决问题。
答案 4 :(得分:0)
如果你总是拥有[10],那么你可以编辑你的final_string,除了前两个数字之外的所有东西。将System.out.println(final_string)更改为System.out.println(final_string.substring(2))。然后,如果需要空格,请键入final_string + =&#34; &#34 ;;在for循环的if语句中。
答案 5 :(得分:0)
试试这个:
String y = "[133] begin0-1-selp-2-yelp-25-jelp-21-hi-35-ou";
String result = y.replaceAll("\\[[0-9]*\\]|[a-zA-Z-]*", "");
或者
String y = "[133] begin0-1-selp-2-yelp-25-jelp-21-hi-35-ou";
String result = y.replaceAll("\\[[\\d]*\\]|[^\\d]", "");
许多方法:)