【发布时间】:2019-12-27 12:03:35
【问题描述】:
我正在做以下编程练习:The old switcheroo。声明是:
写一个函数
Kata.Vowel2Index("this is my string") == "th3s 6s my str15ng"
Kata.Vowel2Index("Codewars is the best site in the world") == "C2d4w6rs 10s th15 b18st s23t25 27n th32 w35rld"您的函数应该对元音不区分大小写。
当输入是空字符串时我有疑问,我的意思是当我们测试时:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class KataTest {
@Test public void test4() {
assertEquals("", Kata.vowel2Index(""));
}
}
我的问题是,为什么如果我们使用包含,我们必须检查输入字符串是否为空?
import java.util.*;
public class Kata {
static final String VOWELS = "AEIOUaeiou";
public static String vowel2Index/*????➡️????*/(String s) {
if(s==null || s.equals("")) return "";
String[] letters = s.split("");
for(int i = 0; i < letters.length; i++){
if(VOWELS.contains(letters[i])){
letters[i] = String.valueOf(i+1);
}
}
return String.join("",letters);
}
}
或者检查循环内的当前字符串是否为空:
import java.util.*;
public class Kata {
static final String VOWELS = "AEIOUaeiou";
public static String vowel2Index/*????➡️????*/(String s) {
String[] letters = s.split("");
for(int i = 0; i < letters.length; i++){
if(letters[i] != "" && VOWELS.contains(letters[i])){
letters[i] = String.valueOf(i+1);
}
}
return String.join("",letters);
}
}
但是我们在使用 indexOf 时可以省略前面的条件:
import java.util.*;
public class Kata {
static final String VOWELS = "AEIOUaeiou";
public static String vowel2Index/*????➡️????*/(String s) {
String[] letters = s.split("");
for(int i = 0; i < letters.length; i++){
if(VOWELS.indexOf(letters[i]) > 0){
letters[i] = String.valueOf(i+1);
}
}
return String.join("",letters);
}
}
我也看过:
- How to check if a String contains another String in a case insensitive manner in Java?
- Java indexOf method for multiple matches in String
contains 和 indexOf 有什么区别?‽?
【问题讨论】:
-
一个返回一个布尔值,另一个返回一个整数值,仅此而已。视需要而定
-
contains就是return indexOf(s.toString()) > -1;
标签: java string if-statement replace substring