如何获取Java中字符串中一定位数后的所有字符?

How can I get all the characters after a certain number of digits in a string in Java?

我的问题很简单。我想在一定数量的数字之后获取字符串中的所有字符。例如,如果我输入 123 InsertIGN,我想知道如何获取 123 之后的所有字符,无论它们有多少。如果我输入 123 VeryLongWordHereshfusihdisa,我希望它仍然有效。我想在 123 之后得到所有东西。我有什么办法可以做到这一点吗?抱歉这个愚蠢的问题,我有一段时间停止在 Java 中编码,最近又回来了。预先感谢您的任何回答!

获取分配给输入字符串中每个字符的 Unicode 代码点整数。

String input = "123 InsertIGN" ;
List< Integer > codePoints = input.codePoints().boxed().toList() ;

循环每个代码点。询问该字符是否为数字。如果是这样,请增加计数。达到您想要的限制后,收集剩余的字符。

StringBuilder result = new StringBuilder() ;
int limit = 3 ;  // Number of digit occurrences to get past. 
int count = 0 ;
for( Integer codePoint : codePoints )
{
    if( count < limit )
    {
        if( Character.isDigit( codePoint ) ) { count ++ ; }
    }
    else
    {
        result.append( codePoint ) ;
    }
}

有一些巧妙的方法可以使用流来做到这一点。但是作为返回 Java 编程的人,您可能对此并不熟悉。所以以上是老派做法。

如果你的测试用例是“123”总是在字符串的第一位。您可以像

这样简单地使用子字符串
String testCase = "123ABCD!@#$";
String result = testCase.substring("123".length());

或者,如果您的测试用例是“123”,它位于随机位置,但仍然可以获得其背后的所有字符。我们可以破解它

String testCase = "ABCD123!@#$";
String splitBy

int index123 = testCase.indexOf("123") + "123".length();
String result = testCase.substring("123".length());

会return

result = !@#$

使用 index123 对象,我们试图获得没有“123”的第一个“123”的位置,这就是为什么我们需要添加“123”的长度。

让我们尝试使用另一个测试用例

String testCase = "ABCD123!@#3XYZ";

将return

result = !@#3XYZ

因为我们只处理第一个“123”