29

Ok, what I want to know is is there a way with Java to do what Python can do below...

string_sample = "hello world"

string_sample[:-1]
>>> "hello world"

string_sample[-1]
>>> "d"

string_sample[3]
>>> "l"

Because it seems to me that Java make you work for the same result (I'm particularly getting at having to use 2 numbers every time and the lack of a -1 to indicate last character)

String string_sample = "hello world";

string_sample.substring(0,string_sample.length()-1);
>>> "hello world"

string_sample.substringstring_sample.length()];
>>> "d"

string_sample.(3,4);
>>> "l"

I haven't gotten on to arrays/lists yet in Java so really hoping Java has something easier than this

Edit: Ammended 'i' to 'l' for string_sample[3]. Well spotted Maroun!

4

8 に答える 8

8

Apacheはcommons-langStringUtilsでこれをサポートしています:

例外を回避して、指定された文字列から部分文字列を取得します。

負の開始位置を使用して、文字列の末尾から n 文字を開始できます

ただし、明示的な開始インデックスを使用する必要があります。

于 2013-06-25T21:30:33.203 に答える
1

このようなメソッドは簡単に作成できます。正しいインデックスを取得するために、文字列の長さから負のインデックスが差し引かれることを思い出してください。

public String slice(String s, int start) {
   if (start < 0) start = s.length() + start; 

   return s.substring(start);
}
于 2013-06-25T21:28:21.040 に答える
1

使用substring:

class Main
{
  public static void main (String[] args) throws java.lang.Exception
  {
     String s = new String("hello world");
     System.out.println(s.substring(0, s.length()));
     System.out.println(s.substring(s.length() - 1, s.length()));
     System.out.println(s.substring(3, 4));
  }
}

またはcharAt:

System.out.println(s.charAt(s.length() - 1));
System.out.println(s.charAt(3));

Java は Python ではないため、一定性を維持するために負のインデックスは避ける必要があります。ただし、単純な変換関数を作成できます。

于 2013-06-25T21:29:19.103 に答える
0

そのための単純なライブラリを作成しましたJavaSlice。これは、Python と同様の方法で、Java で文字列、リスト、または配列のスライスにアクセスするための統一された方法を提供します。

したがって、例は次のように簡単に記述できます。

    String sample = "hello world";

    System.out.println(slice(sample, 0, -1)); // "hello worl"
    System.out.println(slice(sample, -1)); // 'd'
    System.out.println(slice(sample, 3)); // 'l'
于 2013-07-24T15:51:58.163 に答える