Trim 从 space 或 Java 中的制表符向前或向后
Trim from a space or tab onward or backwards in Java
我知道如何 trim Java 中的东西,但是 trim 如何从 space 或制表符向左或向右移动?我有一个搜索一些 4 个字符前缀的程序,假设这个前缀是 XYBC
然后它有 X 个字符,比如 XYBC4975723434
但我的代码采用的行看起来像这样:
Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen
但后来我想 trim 变成这样:XYBC4975723434
谢谢
您可以使用正则表达式来实现这一点。例如,通过使用正则表达式 XYBC\d+
,您可以匹配或查找前缀为 XYBC
的任何数字序列。在代码中,它看起来像这样:
String input = "Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen";
Pattern pattern = Pattern.compile("XYBC\d+");
Matcher matcher = pattern.matcher(input);
if (!matcher.find()) throw new RuntimeException("failed to find any numbers prefixed with XYBC!");
System.out.println(matcher.group()); // prints "XYBC4975723434"
同时查看给定正则表达式的详细信息 here。
这不是 trim,而是正则表达式查找,使用以下正则表达式:
\bXYBC.*?\b
该表达式使用了单词边界,这可能不是您想要的。
对于空格,使用:
(?<=^|\s)XYBC\S*
测试
public static void main(String[] args) {
test("Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen");
test("XYBC4975723434");
test("Viuhaskfdksjfkds xXYBC4975723434 fkdsjkfjaksjfklsdakldjsen");
test("abc XYBC49-75(723)4 xyz");
}
private static void test(String text) {
Matcher m = Pattern.compile("\bXYBC.*?\b").matcher(text);
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("Not found: " + text);
}
}
输出(字边界)
XYBC4975723434
XYBC4975723434
Not found: Viuhaskfdksjfkds xXYBC4975723434 fkdsjkfjaksjfklsdakldjsen
XYBC49
输出(空白)
XYBC4975723434
XYBC4975723434
Not found: Viuhaskfdksjfkds xXYBC4975723434 fkdsjkfjaksjfklsdakldjsen
XYBC49-75(723)4
I have a prog that searches for some 4 character prefixes let’s say this prefix is XYBC then it has X amount of characters to it
如果您希望您的程序抓取具有特定起始字母的子字符串并抓取特定数量的字母,您可以这样做(除了使用正则表达式):
public static String grabText(String str, String find, int n){
int idx = str.indexOf(find);
if(idx == -1)
return "";
else{
String sub = str.substring(idx, Math.min(n, str.length() - idx)+ idx);
return sub;
}
}
测试:
String str = "Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen";
System.out.println(grabText(str, "XYBC", 14));
System.out.println(grabText(str, "XYBC", 5));
System.out.println(grabText(str, "XYBC", 100));
System.out.println(grabText(str, "XYBC", 9999));
输出:
XYBC4975723434
XYBC4
XYBC4975723434 fkdsjkfjaksjfklsdakldjsen
XYBC4975723434 fkdsjkfjaksjfklsdakldjsen
我知道如何 trim Java 中的东西,但是 trim 如何从 space 或制表符向左或向右移动?我有一个搜索一些 4 个字符前缀的程序,假设这个前缀是 XYBC
然后它有 X 个字符,比如 XYBC4975723434
但我的代码采用的行看起来像这样:
Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen
但后来我想 trim 变成这样:XYBC4975723434
谢谢
您可以使用正则表达式来实现这一点。例如,通过使用正则表达式 XYBC\d+
,您可以匹配或查找前缀为 XYBC
的任何数字序列。在代码中,它看起来像这样:
String input = "Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen";
Pattern pattern = Pattern.compile("XYBC\d+");
Matcher matcher = pattern.matcher(input);
if (!matcher.find()) throw new RuntimeException("failed to find any numbers prefixed with XYBC!");
System.out.println(matcher.group()); // prints "XYBC4975723434"
同时查看给定正则表达式的详细信息 here。
这不是 trim,而是正则表达式查找,使用以下正则表达式:
\bXYBC.*?\b
该表达式使用了单词边界,这可能不是您想要的。
对于空格,使用:
(?<=^|\s)XYBC\S*
测试
public static void main(String[] args) {
test("Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen");
test("XYBC4975723434");
test("Viuhaskfdksjfkds xXYBC4975723434 fkdsjkfjaksjfklsdakldjsen");
test("abc XYBC49-75(723)4 xyz");
}
private static void test(String text) {
Matcher m = Pattern.compile("\bXYBC.*?\b").matcher(text);
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("Not found: " + text);
}
}
输出(字边界)
XYBC4975723434
XYBC4975723434
Not found: Viuhaskfdksjfkds xXYBC4975723434 fkdsjkfjaksjfklsdakldjsen
XYBC49
输出(空白)
XYBC4975723434
XYBC4975723434
Not found: Viuhaskfdksjfkds xXYBC4975723434 fkdsjkfjaksjfklsdakldjsen
XYBC49-75(723)4
I have a prog that searches for some 4 character prefixes let’s say this prefix is XYBC then it has X amount of characters to it
如果您希望您的程序抓取具有特定起始字母的子字符串并抓取特定数量的字母,您可以这样做(除了使用正则表达式):
public static String grabText(String str, String find, int n){
int idx = str.indexOf(find);
if(idx == -1)
return "";
else{
String sub = str.substring(idx, Math.min(n, str.length() - idx)+ idx);
return sub;
}
}
测试:
String str = "Viuhaskfdksjfkds XYBC4975723434 fkdsjkfjaksjfklsdakldjsen";
System.out.println(grabText(str, "XYBC", 14));
System.out.println(grabText(str, "XYBC", 5));
System.out.println(grabText(str, "XYBC", 100));
System.out.println(grabText(str, "XYBC", 9999));
输出:
XYBC4975723434
XYBC4
XYBC4975723434 fkdsjkfjaksjfklsdakldjsen
XYBC4975723434 fkdsjkfjaksjfklsdakldjsen