5

たとえば、タブ区切りの値のリストがある場合:

foo1\tfoo2\tfoo3\tfoo4\t

最後の\tは、各に\tが自動的に追加されるために追加されました+=

最後の\tを簡単に削除するにはどうすればよいですか?結果は次のようになります。

foo1\tfoo2\tfoo3\tfoo4

ホバーからのリクエストとして、私が持っていたものの小さな例:

String foo = "";
for (int i = 1; i <= 100; i++) {
    foo += "foo" + "\t";
    if (i % 10 == 0) {
        foo = foo.trim(); // wasn't working
        foo += "\n";
    }
}
System.out.println(foo);

出力(ここに表示するために実際のタブを文字列のタブに置き換えました):

foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t
foo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\tfoo\t

これが私がこの質問をした主な理由です。.trim()が機能していなかったので、trim()が末尾のタブ用に作成されていなかったのは難しいです。

4

6 に答える 6

9
String s1 = "foo1\tfoo2\tfoo3\tfoo4\t".trim();
于 2013-02-06T04:29:03.350 に答える
5
String expectedString = "foo1\tfoo2\tfoo3\tfoo4\t".trim();
于 2013-02-06T04:32:32.460 に答える
4

末尾のタブを削除したいだけの場合は、次のようにすることができます。

String s1 = "foo1\tfoo2\tfoo3\tfoo4\t";
while (s1.endsWith("\t")) {
    s1 = s1.substring(0, s1.length()-1);
}
于 2013-02-06T04:38:24.017 に答える
1

私たちの議論を明確にするために、これを実行すると、何がわかりますか?

public class Foo3 {
   public static void main(String[] args) {
      String foo = "";
      for (int i = 1; i <= 100; i++) {
         if (i % 10 == 1) {
            foo += "\"";
         }

         foo += "foo" + "\t";
         if (i % 10 == 0) {
            foo = foo.trim(); // wasn't working
            foo += "\"\n";
         }
      }
      System.out.println(foo);
   }
}

私自身、私は得る:

"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"
"foo foo foo foo foo foo foo foo foo foo"

うまく機能しているtrim()メソッドを示しています。

于 2013-02-06T05:42:51.470 に答える
1

ループが次のようになっている場合

for(...){
     values += foo + number + "\t" 
}

あなたはできる

  • 使用するtrim()
  • values.substring(0、values.length-1)を使用します
  • ループを変更してn-1反復を実行し、タブなしで最後の部分を手動で適用します
  • 3番目の反復の明示的なテストを追加しn、「\ t」(values += foo + (i==n-1)? numbers:numbers+"\t")を適用しない
于 2013-02-06T04:38:28.087 に答える
1

HovercraftFullOfEelsは正しいString#trimですが、あなたが望むことを実行する必要があります...

String testing = "foo1\tfoo2\tfoo3\tfoo4\t";
System.out.println("\"" + testing.trim() + "\"");
if (testing.endsWith("\t")) {
    testing = testing.substring(0, testing.lastIndexOf("\t"));
    System.out.println("\"" + testing + "\"");
}

どの出力...

"foo1   foo2    foo3    foo4"
"foo1   foo2    foo3    foo4"

更新しました

そしてそれが失敗した場合...のようなもの...

StringBuilder sb = new StringBuilder(testing);
while (sb.lastIndexOf("\t") == sb.length()) {
    sb.delete(sb.length() - 1, sb.length());
}
System.out.println("\"" + sb.toString() + "\"");

役立つかもしれません...

于 2013-02-06T04:39:52.337 に答える