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