我希望将一个字母逐个插入到字符串的每个可能索引中。
例如字符串ry
会去"ary" "bry" "cry" ... "zry" ... "ray" "rby" .... "rzy" ... "rya" "ryb"
我不知道如何开始,任何帮助?
答案 0 :(得分:2)
试试这个
System.out.println("originaltext".replaceAll(".{1}","$0ry"));
以上是使用String replaceAll(String regex,String replacement)方法 - “将此字符串的每个子字符串替换为给定替换的给定正则表达式。”
“。{1}” - 用于查找任何字符的恰好一次出现({1})的正则表达式(。)
“$ 0ry” - 匹配值后跟所需字符(ry)的替换字符串“$ 0”。
所有比赛都会重复这个!
答案 1 :(得分:1)
String originalString = /* your original string */;
char[] characters = /* array of characters you want to insert */;
Vector<String> newStrings = new Vector<>();
String newString;
for (int idx = 0; idx < originalString.length() + 1; ++idx) {
for (char ch : characters) {
newString = originalString.substring(0, idx)
+ ch
+ originalString.substring(idx, originalString.length());
newStrings.add(newString);
}
}
为了将每个字母插入字符串中的索引,您需要一个循环来遍历每个字母。
为了在字符串中的每个索引中插入一个字母,您需要一个循环来遍历字符串中的每个索引。
要同时执行这两项操作,您应该将一个循环嵌套在另一个循环中。这样,将处理索引和字符的每个组合。在你提出的问题中,哪个循环进入另一个循环并不重要 - 它将以任何一种方式工作。
(你实际上必须遍历字符串+1
中的每个索引......我在下面解释原因)
首先,请务必注意以下事项:
这就是你必须遍历原始字符串的每个索引加上一个的原因。因为一旦你&#34;插入&#34;字符,新字符串的长度实际上等于originalString.length() + 1
,即有n + 1
个可能的位置,您可以在其中插入&#34;这个角色。
考虑到这一点,你实际形成一个新字符串的方式(以你想要的方式)是通过获取目标索引左侧的所有内容,将所有内容放在目标索引的右侧,然后将它们连接到目标索引的右侧。中间的新角色,例如leftSubstring + newCharacter + rightSubstring
。
现在,似乎这对第一个和最后一个索引都不起作用,因为leftSubstring和/或rightSubstring是一个空字符串。但是,即使使用空字符串,字符串连接仍然有效。
characters
也可以是实现iterable
的任何集合。它不必是原始数组。characters
不必包含原始char
元素。它可以包含任何可以与String连接的类型。substring(int,int)
方法返回子字符串,包括 beginIndex
处的字符,但不包括 {{1}处的字符}。这意味着endIndex
可能等于endIndex
而没有任何问题。答案 2 :(得分:0)
你需要一个从i = 0到你的字符串长度的循环 然后是你要插入的每个字符的另一个循环 - 所以如果你想继续用A到Z的每个可能字母创建新字符串,请从char A ='a'到'z'进行循环并继续增加它们++ A(这应该适用于java)。
这应该会给你一些想法。
答案 3 :(得分:0)
例如,假设您希望它们都在列表中,您可以执行类似的操作(迭代所有位置以插入并迭代所有字母):
List<String> insertLetters(String s) {
List<String> list = new ArrayList<String>();
for (int i = 0; i <= s.length(); i++) {
String prefix = s.substring(0, i);
String postfix = s.substring(i, s.length());
for (char letter = 'a'; letter <= 'z'; letter++) {
String newString = prefix + letter + postfix;
list.add(newString);
}
}
return list;
}
答案 4 :(得分:0)
String x = "ry";
char[] alphabets = "abcdefghijklmnopqrstuvwxyz".toCharArray();
String[] alphabets2 = new String[alphabets.length];
for (int i=0;i<alphabets.length;i++){
char z = alphabets[i];
alphabets2[i] = z + x;
}
for (String s: alphabets2
) {
System.out.println(s);
}
答案 5 :(得分:-1)
首先,您需要一个字母数组(更容易继续)。
我不会给你确切的答案,但要开始,所以你会学习。
int length = 0; 这里的数组
while(length <= 2) {
think what would be here: hint you put to index (length 0) the all alphabet and move to index 1 and then 2
}