setCharAt 不是字符串函数,因为 String 是不可变的,但是您可以使用 char 数组或 StringBuilder (仅包装 char 数组)来执行此操作。isAlphaNumeric 不是我能找到的任何标准方法,但是 Character.isAlphabetic 是我相信你想要的。这是尽可能接近您的限制:
private static CharSequence reverseWords( CharSequence in )
{
StringBuilder sb = new StringBuilder( in );
for( int i = 0, len = sb.length(); i < len; i++ )
{
if( Character.isAlphabetic( sb.charAt( i ) ) )
{
int end = i;
while( ++end < len && Character.isAlphabetic( sb.charAt( end ) ) );
int j = end - 1;
while( j > i )
{
char temp = sb.charAt( i );
sb.setCharAt( i++, sb.charAt( j ) );
sb.setCharAt( j--, temp );
}
i = end;
}
}
return sb;
}
但是,如果您想在没有 StringBuilder 的情况下直接使用 char 数组:
private static String reverseWords( String in )
{
char[] chars = in.toCharArray();
for( int i = 0, len = chars.length; i < len; i++ )
{
if( Character.isAlphabetic( chars[i] ) )
{
int end = i;
while( ++end < len && Character.isAlphabetic( chars[end] ) );
int j = end - 1;
while( j > i )
{
char temp = chars[i];
chars[i++] = chars[j];
chars[j--] = temp;
}
i = end;
}
}
return String.valueOf( chars );
}