Есть ли лучший способ написать s.substring, чтобы мой код не дал сбой при наличии одного символа

, найденный здесь: https://gist.github.com/jlong/2428561

var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";

parser.protocol; // => "http:"
parser.host;     // => "example.com:3000"
parser.hostname; // => "example.com"
parser.port;     // => "3000"
parser.pathname; // => "/pathname/"
parser.hash;     // => "#hash"
parser.search;   // => "?search=test"
parser.origin;   // => "http://example.com:3000"

0
задан Karol Dowbecki 17 January 2019 в 10:49
поделиться

3 ответа

Пожалуйста, проверьте код ниже

class test {
 public static void main(String[] args) {

  String s = "o";

  if (s.length() <= 1) {
   System.out.println(s);
  } else {
   String s1 = s.substring(0, 2);
   System.out.println(s1);
  }

 }
}

У нас не может быть подстроки, длина которой больше длины предоставленной строки, и, следовательно, эти ошибки.

0
ответ дан kalpaj agrawalla 17 January 2019 в 10:49
поделиться

Когда строка содержит только один символ, вы все равно запускаете String s1 = s.substring(0,2);, который попытается получить доступ ко второму символу, и вы получите исключение вне диапазона.

Вы можете написать свой код как:

 String s = "o";
 String s1 = s;


if (s.length() > 2) {
    s1 = s.substring(0,2);
}
System.out.println(s1);    

Таким образом, вы можете создать подстроку из s, только если она содержит более 2 символов.

0
ответ дан nos 17 January 2019 в 10:49
поделиться

Альтернатива:

s.substring(0, Math.min(2, s.length()))
0
ответ дан kumesana 17 January 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: