gpt4 book ai didi

Java 将字符串从单个字符串中分离出来

转载 作者:行者123 更新时间:2023-12-02 03:55:27 24 4
gpt4 key购买 nike

我的字符串集是“5X3I3M3X”

我想分隔 5X = 1X1X1X1X1X ,取决于字符“X”前面的数字

所以最后可能是1X1X1X1X1X3I3M1X1X1X

我是这样做的,

    String str = "5X3I3M3X";
StringBuffer sBuffer = new StringBuffer("");

for(int i = 1 ; i < str.length() ; i=i+2) {
if( str.charAt(i) == 'X'){

if(str.charAt(i-1) == 1){
sBuffer.append(str.charAt(i-1)+""+str.charAt(i));
}else{
StringBuffer sBufferTemp = new StringBuffer("");

for(int j=0 ; j < Character.getNumericValue(str.charAt(i-1)) ; j++){
sBufferTemp.append("1X");
}

sBuffer.append(sBufferTemp.toString());
}
} else {
sBuffer.append(str.charAt(i-1)+""+str.charAt(i));
}
}
System.out.println(sBuffer.toString());

我想知道是否有任何简单的方法来分离该逻辑?笔记。如果我想添加到单独的“I”,那么它也应该动态更改,如“1X1X1X1X1X1I1I1I3M1X1X1X”

我可以更改我的代码 extpend if (str.charAt(I) == 'I') ....

我希望有另一种简单的方法来实现这一点。

最佳答案

根据您的编码解决方案,我建议进行以下更改:

String str = "5X3I3M3X";
StringBuilder sBuffer = new StringBuilder();
for (int i = 0; i < str.length(); ++i) {
if (i + 1 < str.length()
&& str.charAt(i + 1) == 'X'
&& str.charAt(i) != '1'
&& Character.isDigit(str.charAt(i))) {
int n = Character.getNumericValue(str.charAt(i));
for (int j = 0 ; j < n; ++j) {
sBufferTemp.append("1X");
}
++i;
} else {
sBuffer.append(str.charAt(i));
}
}
  • 使用更新更快的 StringBuilder 而不是 StringBuffer
  • 循环遍历所有 i,因此默认情况下的附加操作是直接的
  • 条件可以更完整,不需要检查“1”。
  • 必须与字符“1”进行比较,而不是 1。

关于Java 将字符串从单个字符串中分离出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com