子串范围(Java)

时间:2014-03-13 21:49:32

标签: java string substring

我怎样才能从一个类似的东西中获得三个子串?#34;我是50"?我必须扭转它("我早上50点")但只需要知道范围是什么(不是有效的范围,如"从3到5"或类似因为单词可能会有所不同) 。谢谢。

ss1 = string.substring(0, index); // index = " ";
ss2 = string.substring(index+1, **?** );
ss3 = string.substring( **?** , string.length());

4 个答案:

答案 0 :(得分:1)

要遵循的步骤:

  • 基于一个或多个空格分割原始字符串
  • 以相反的顺序迭代每个单词

示例代码:

    String str = "I am 50";
    String[] array = str.split("\\s+");

    StringBuffer buffer = new StringBuffer();
    for (int i = array.length - 1; i >= 0; i--) {
        buffer.append(" ").append(array[i]);
    }
    String reverse = buffer.substring(1);

答案 1 :(得分:0)

你可以使用string.split(""),它会返回一个字符串数组 - 单个单词。然后你可以反转数组并计算范围

答案 2 :(得分:0)

我会在这里使用String#split(String)函数。

您可以做的是致电string.split(" ");,这会将字符串拆分为独立的字词。然后,您可以反转数组。


String str = "I am 50";
StringBuilder builder = new StringBuilder(str.length);
String[] words = str.split(" ");
for(int i = words.length - 1; i >= 0; i--){
    builder.append(words[i]);
    builder.append(' ');
}
String result = builder.toString().trim();

答案 3 :(得分:0)

如果您不反对使用Apache Commons ArrayUtilsStringUtils类,那么这是最短的方式

String[] words = string.split("\\s");
ArrayUtils.reverse(words);
System.out.println(StringUtils.join(words," "));