Java11:从字符串中删除第一个字符
我正在尝试CodeWar的一个小练习,我几乎完成了。 我最后一次尝试是删除字符串的第一个字符, 但有趣的是,一个输出已经起作用了,但另一个没有: 输出1:R\u L变为:\u L(当它呼喊时) 我们的计算2:_ABC变成:_ABC(它没有删除字符??) 在下面的代码中,我使用.substring(1)删除字符, 但我也尝试了StringBuilder与deletechar()的结合 我也有同样的结果 请检查代码,可以证明它是超基本的,但我找不到Java11:从字符串中删除第一个字符,java,string,character,remove,Java,String,Character,Remove,我正在尝试CodeWar的一个小练习,我几乎完成了。 我最后一次尝试是删除字符串的第一个字符, 但有趣的是,一个输出已经起作用了,但另一个没有: 输出1:R\u L变为:\u L(当它呼喊时) 我们的计算2:_ABC变成:_ABC(它没有删除字符??) 在下面的代码中,我使用.substring(1)删除字符, 但我也尝试了StringBuilder与deletechar()的结合 我也有同样的结果 请检查代码,可以证明它是超基本的,但我找不到 import java.util.stream.C
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.List;
import java.lang.*;
// MISSION: Remove all the WUB's from the String
// Brianstorm - Roadmap
// remove WUB from WUBWUBABCWUB or RWUBWUBWUBLWUB
// String to char list
// loop list i++
// get index i, i+1, i+2 (in the 1ste loop would be WUB or RWU)
// join indexes ("WUB" or "RWU")
// if (indexes == WUB) Remove indexes from char list and set i to 0
// else { // do nothing and continue loop }
// finish loop
// convert character list to String
// output string
public class Dubstep {
public static String SongDecoder (String song) {
// String to Char list
char[] songChars = song.toCharArray();
// loop list
for ( int i=0; i < songChars.length-2; i++ ) {
// Convert Char to numeric value
int W = Character.getNumericValue(songChars[i]);
int U = Character.getNumericValue(songChars[i+1]);
int B = Character.getNumericValue(songChars[i+2]);
// if indexes are W U B,
if ( W == 32 && U == 30 && B == 11 ) {
// System.out.println("We found a WUB");
// replace INDEXES with null value
songChars[i] = '\0';
songChars[i+1] = '\0';
songChars[i+2] = '\0';
} // end statement
} // end loop
// Apply Spaces in between words
// Output example: not like this: RL, but this: R_L
for ( int i=1; i < songChars.length; i++ ) {
// Convert index to numeric value
int x = Character.getNumericValue(songChars[i]);
int y = Character.getNumericValue(songChars[i-1]);
// apply space inbetween words
if ( x != -1 && y == -1 ) {
songChars[i-1] = '_';
}
} // end loop
// Char list to string & remove null's
String songOut = new String(songChars);
// remove first index of the string
String removeChar = songOut.substring(1);
return removeChar;
}
public static void main(String[] args) {
String Deco1 = SongDecoder("WUBWUBABCWUB");
System.out.println(Deco1);
String Deco2 = SongDecoder("RWUBWUBWUBLWUB");
System.out.println(Deco2);
}
}
import java.util.stream.collector;
导入java.util.array;
导入java.util.List;
导入java.lang.*;
//任务:从字符串中移除所有WUB
//Brianstorm-路线图
//从WubwubbcWub或Rwubwubwubwub移除WUB
//字符串到字符列表
//循环列表i++
//获取索引i、i+1、i+2(在1ste循环中为WUB或RWU)
//连接索引(“WUB”或“RWU”)
//如果(indexes==WUB)从char列表中删除索引并将i设置为0
//否则{//不执行任何操作并继续循环}
//结束循环
//将字符列表转换为字符串
//输出字符串
公共类Dubstep{
公共静态字符串歌曲解码器(字符串歌曲){
//字符串到字符列表
char[]songChars=song.toCharArray();
//循环列表
for(int i=0;i
歌曲不仅仅是“ABC”。
它还包含您添加的“\0”。
它们也是字符串的一部分。
打印字符串时,只会看到可见字符。
您看不到的“\0”
试着把歌曲的长度打印出来,你会发现它比ABC长
将“\0”替换为“\n”,您的打印输出将包含许多新行
rwubwubwub将R作为第一个字符。
然后它作为第一个字符结束。您可以尝试通过先将歌曲传出来调试它,看看它是否真的是不起作用的子字符串(1)。那么你会得到什么呢?想想也许在不起作用的情况下,第一个角色并不是你想象的那样。也许中间也有你不想要的角色。我让它工作了,但是需要
trim()
和replace()
来获得预期的输出,而不仅仅是substring()
。thx只是另一个开发者,thim()函数以前从未听说过它,但它非常适合这种情况。但我仍然不明白为什么我会有这个问题。不确定“第一个字符不是您认为的”是什么意思?当“\0”是字符串中的第一个或最后一个字符时,修剪将起作用。不在其他字符之间。它们仍然存在,字符串不仅仅是R\u L,而是R\0\0\u L(或类似的东西)