View Javadoc
1   package org.davidmoten.text.utils;
2   
3   final class CharSequenceConcatRightTrim implements CharSequence {
4   
5       private final CharSequence a;
6       private final CharSequence b;
7   
8       CharSequenceConcatRightTrim(CharSequence a, CharSequence b) {
9           this.a = a;
10          this.b = b;
11      }
12  
13      @Override
14      public int length() {
15          int i = a.length() + b.length() - 1;
16          while (i > 0 && Character.isWhitespace(charAt(i))) {
17              i--;
18          }
19          return i + 1;
20      }
21  
22      @Override
23      public char charAt(int index) {
24          if (index < a.length()) {
25              return a.charAt(index);
26          } else {
27              return b.charAt(index - a.length());
28          }
29      }
30  
31      @Override
32      public CharSequence subSequence(int start, int end) {
33          return new CharSequence() {
34  
35              @Override
36              public int length() {
37                  return end - start;
38              }
39  
40              @Override
41              public char charAt(int index) {
42                  return CharSequenceConcatRightTrim.this.charAt(start + index);
43              }
44  
45              @Override
46              public CharSequence subSequence(int start2, int end2) {
47                  // only support one level of substring
48                  StringBuilder s = new StringBuilder(end2 - start2);
49                  for (int i = start2; i < end2; i++) {
50                      s.append(charAt(i));
51                  }
52                  return s;
53              }
54  
55              @Override
56              public String toString() {
57                  StringBuilder s = new StringBuilder();
58                  int len = length();
59                  for (int i = 0; i < len; i++) {
60                      s.append(charAt(i));
61                  }
62                  return s.toString();
63              }
64  
65          };
66      }
67  
68      @Override
69      public String toString() {
70          StringBuilder s = new StringBuilder();
71          int len = length();
72          for (int i = 0; i < len; i++) {
73              s.append(charAt(i));
74          }
75          return s.toString();
76      }
77  
78  }