返回当前字符串的新字符串版本,其中所有字母
给定的字母可以是a-z或a-z(包括a-z)。要删除的字母不区分大小写。如果“more”为false,则返回的字符串中所有小于或等于n的字母都将被删除。如果“more”为true,则返回的字符串中所有大于或等于n的字母都将被删除。如果当前字符串为null,则该方法应返回空字符串。如果n不是字母(并且当前字符串不为null),则该方法应返回空字符串。
问题:由于该方法接收char n,如何将循环应用于每个字符?我是否使用arrayOfArg以及使用arrayOfArg[i]存储字母多于字母是否正确?
public String filterLetters(char n, boolean more) {
char [] arrayOfArg = n.toCharArray();
String myNewString = "";
String removedChar = "";
if (n == null) {
return "";
}
for (int i = 0; i < Character.length; i++) {
if (more == false) {
//all letters less than or equal to n will be removed in the returned string
if (Character.isLetter(i) == true) continue;
removedChar = arrayOfArg[i] ++;
myNewString = arrayOfArg.replace(removedChar,"");
}
if (more == true) {
//all letters less than or equal to n will be removed in the returned string
if (Character.isLetter(i) == true) continue;
removedChar = arrayOfArg[i] -- ;
myNewString = arrayOfArg.replace(removedChar,"");
}
}
return myNewString;
}
使用正则表达式!
public String filterLetters(String str, char n, boolean more) {
if (str == null || !Character.isLetter(n)) {
return "";
}
String range = more ? n + "-z" : "a-" + n;
return str.replaceAll("(?i)[" + range + "]", "");
}
其工作原理是创建正则表达式,如下所示:
more
为真:(? i)[n-z]
more
为false:(? i)[a-n]
其中“n”是传入的实际字符。
(?i)
标志打开大小写不敏感。
[a-n]
是从a到n的字符范围(包括)[n-z]
是从n
到z
的字符范围(包括)。
注意:方法中添加了必要的字符串参数。
这是对您请求的代码的轻微修改,但输出工作正常。我肯定有人比我有更好的主意。这只是一个开始。
public static String filterLetters(String word, String n, boolean more) {
String[] alphabet = new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
int charValue = 0;
//Find Numerical Value of Char n
for (int i = 0; i < alphabet.length; i++) {
if (alphabet[i].equalsIgnoreCase(n)) {
charValue = i + 1;
}
}
if (more) {
for (int i = charValue; i < alphabet.length; i++) {
word = word.replaceAll(alphabet[i],"");
}
} else {
for (int i = charValue; i > 0; i--) {
word = word.replaceAll(alphabet[i],"");
}
}
return word;
}
GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串
我对编码非常陌生,刚刚接触过静态方法,所以我为这些愚蠢的错误提前道歉。在main下调用该方法时,该方法应该显示一个三角形,但我得到的控制台是空的,没有输出。但是,如果我将此写在main下: 然后,三角形将显示在控制台中,但是对于这个赋值,字符串/三角形必须仅通过使用来调用
问题内容: 我已经看到了关于获取所有可能的子字符串(即相邻字符集)的许多问题,但是对于生成所有可能的字符串(包括其子字符串的组合)都没有疑问。 例如,让: 我希望输出是这样的: 要点是,我们可以删除原始字符串中不相邻的多个字符(以及相邻的字符)。 到目前为止,这是我尝试过的: 但是,这只会从原始字符串中删除相邻字符串的集合,而不会返回上例中的元素。 另一个示例是,如果我们使用字符串,则输出列表应包
问题内容: 我正在尝试查找Java字符串中所有出现的子字符串。 例如:在“ ababsdfasdfhelloasdf”中搜索“ asdf”将返回[8,17],因为有2个“ asdf”,一个在位置8,另一个在17。在“ aaaaaa”中搜索“ aa”将返回[0, 1,2,3,4],因为位置0、1、2、3和4处有一个“ aa”。 我尝试了这个: 可以在Python中解决此问题,如下所示: 其中“ wo
我有一个文本包含一些我想要标记的单词,要标记的单词包含在一个列表中。问题是其中一些单词是其他单词的子字符串,但我想从列表中标记最长的可识别字符串。 例如,如果我的文本是“foo和bar不同于foo bar。”我的列表包含“foo”、“bar”和“foo bar”,结果应该是“[tag]foo[/tag]和[tag]bar[/tag]不同于[tag]foo bar[/tag]。”
但是我得到了一个错误,它告诉我必须返回一个字符串。当我查看API时,它告诉我它返回的字符串是另一个字符串的子集...这意味着我返回的是一个字符串,对吗?我被告知这是因为我在循环中返回一个字符串,这不是一回事,但我对这意味着什么有点困惑,因为循环不是在方法中吗?有没有人知道我做错了什么或者我该怎么解决这个问题?