任务是要求我从字符串中输入,例如“ aaligatoor”, 输出像:“ oaligatoar” 我找到了类似的解决方案:
public static String letterReplacement(final String word) {
String o = "o";
String a = "a";
if (word.contains("a") && word.contains("o")) {
return word.replaceFirst("a", "o")
.replaceFirst("(?s)(.*)" + 'o', "$1" + 'a');
} else {
return "Your word does not contain both of 'a' and 'o' letters, sorry...";
}
}
但它看起来很棘手,也许有人知道解决此问题的任何更易理解的方法? 非常感谢您的协助和关注。
答案 0 :(得分:7)
找到“ a”的第一个索引(String.indexOf()
)和“ o”的最后一个索引(String.lastIndexOf()
)。如果两个索引均> -1,则交换字母
类似的东西:
public class StackOverflow {
public static void main(String[] args) {
String data = "aaligatoor";
int firstAindex = data.indexOf("a");
int lastOindex = data.lastIndexOf("o");
if (firstAindex > -1 && lastOindex > -1) {
char[] letters = data.toCharArray();
letters[firstAindex] = 'o';
letters[lastOindex] = 'a';
data = new String(letters);
}
System.out.println(data);
}
}
结果
oaligatoar
答案 1 :(得分:5)
String s = "aalligatoor";
int oIndex = s.lastIndexOf('o');
int aIndex = s.indexOf('a');
if (oIndex > -1 && aIndex > -1) {
char[] stringArray = s.toCharArray();
stringArray[oIndex] = 'a';
stringArray[aIndex] = 'o';
s = new String(stringArray);
System.out.println(s);
}
应该在时间和空间上都可以。而且很容易理解和理解。
如果在字符串中找不到字母,则indexOf
方法将返回-1。因此,我们可以进行检查,只需将字母分配给char
数组中的位置即可。请记住,Java中的字符串是不可变的,因此我们不能将新位置分配给原始字符串。
最后,我们可以将char
数组重新转换为交换后的字符串。
答案 2 :(得分:3)
这是我能想到的最简单的方法。
public String swapAO(String s) {
int a = s.indexOf('a');
int o = s.lastIndexOf('o');
if (a < 1 || o < 1) return s;
String beforeA = s.substring(0, a);
String between = s.substring(a + 1, o);
String afterO = s.substring(o + 1);
return beforeA + 'o' + between + 'a' + afterO;
}
简单地说,indexOf
和lastIndexOf
返回字符的第一/最后位置;如果不存在该字符,则返回负数。该代码说:“找到第一个'a'
和最后一个'o'
,然后在'a', between the
'a'and
'o'{ {1}}'o', and after the
'a', and join them back together with the
'o'`切换”。
NB:and
返回从substring(from, to)
开始并在 before from
之前终止的字符串部分,即to
包含在内,{{1 }} 不是。另外,使用from
比转换为to
然后再转换为substring
的效率更高,因为char[]
不会从原始字符串复制文本,而是使用相同的字符数组作为内部的原始字符串。
如果需要,您也可以使用Regex。
String
答案 3 :(得分:1)
这是使用纯正则表达式的另一种方式:
import requests
import re
web = requests.Session()
site_token = web.get("https://www.enjoei.com.br/usuario/identifique-se")
get_token = re.search('<form class="Search js-ui-search" role="search" data-search-auto-init="true" action="/busca" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"/><input type="hidden" name="authenticity_token" value="(.+?)"/>', site_token.text).group(1)
req = web.post("https://www.enjoei.com.br/usuario/identifique-se",
data={"utf8":"✓", "authenticity_token":get_token, "user[pid]", "user[email]":"example@gmail.com", "user[password]":"123456", "user[remember_me]":"1", "user[unique_token]="})
print(get_token)