Java 将由指定字符分隔的字符串部分按相反顺序重新排序
我有一个字符串Java 将由指定字符分隔的字符串部分按相反顺序重新排序,java,android,Java,Android,我有一个字符串Australia@2@India@30@UK@4@USA@43 我需要反转,例如USA@43@UK@4@India@30@Australia@2 这只是一个示例字符串,实际上该字符串至少有20个@符号 我尝试了newstringbuilder(newString.reverse().toString()但是我得到的输出非常奇怪。反向意味着ABC被反向为CBA。。。。 你得到的结果并不奇怪,只不过是按字母顺序排列的角色。 您可能会根据@进行拆分反向意味着ABC反向为CBA。。。。
Australia@2@India@30@UK@4@USA@43
我需要反转,例如USA@43@UK@4@India@30@Australia@2
这只是一个示例字符串,实际上该字符串至少有20个@符号
我尝试了
newstringbuilder(newString.reverse().toString()代码>但是我得到的输出非常奇怪。反向意味着ABC被反向为CBA。。。。
你得到的结果并不奇怪,只不过是按字母顺序排列的角色。
您可能会根据@进行拆分反向意味着ABC反向为CBA。。。。
你得到的结果并不奇怪,只不过是按字母顺序排列的角色。
您可能会基于@进行拆分。我不确定这是否是最佳解决方案。我确定可能有很多更好的解决方案,但下面的代码给出了所需的输出:
String s="Australia@2@India@30@UK@4@USA@43";
String[] sArr = s.split("@");
String rev="";
String temp="";
for(int i= sArr.length-1;i>=0;i--){
Scanner scan = new Scanner(sArr[i]);
if(scan.hasNextInt()){
temp='@'+scan.next();
}
else if(scan.hasNext()){
rev+=scan.next()+temp;
}
}
System.out.println(rev);
OUTPUT:USA@43UK@4India@30Australia@2
我不确定这是否是最好的解决方案。我肯定会有很多更好的解决方案,但下面的代码给出了所需的输出:
String s="Australia@2@India@30@UK@4@USA@43";
String[] sArr = s.split("@");
String rev="";
String temp="";
for(int i= sArr.length-1;i>=0;i--){
Scanner scan = new Scanner(sArr[i]);
if(scan.hasNextInt()){
temp='@'+scan.next();
}
else if(scan.hasNext()){
rev+=scan.next()+temp;
}
}
System.out.println(rev);
OUTPUT:USA@43UK@4India@30Australia@2
我可以想出一个简单的解决办法。它使用String.split和StringBuffer类
public class TestStrings {
public static void main(String[] args) {
String sampleStr = "Australia@2@India@30@UK@4@USA@43";
String [] strArr = sampleStr.split("@");
StringBuffer strBuffer = new StringBuffer();
for(int i=strArr.length-1;i>=0;i=i-2)
strBuffer.append(strArr[i-1]+"@"+strArr[i]);
String finalStr = strBuffer.toString().replaceFirst("[@]$", "");
System.out.println(finalStr);
}
}
//输出
// USA@43UK@4India@30Australia@2我可以想出一个简单的解决办法。它使用String.split和StringBuffer类
public class TestStrings {
public static void main(String[] args) {
String sampleStr = "Australia@2@India@30@UK@4@USA@43";
String [] strArr = sampleStr.split("@");
StringBuffer strBuffer = new StringBuffer();
for(int i=strArr.length-1;i>=0;i=i-2)
strBuffer.append(strArr[i-1]+"@"+strArr[i]);
String finalStr = strBuffer.toString().replaceFirst("[@]$", "");
System.out.println(finalStr);
}
}
//输出
// USA@43UK@4India@30Australia@2好的,这是您可以尝试的:-
String str = "Australia@2@India@30@UK@4@USA@43";
String[] arr = str.split("(?<![a-zA-Z])@(?<!\\d)");
StringBuilder builder = new StringBuilder();
for(int i = arr.length - 1; i >= 0; i--) {
builder.append(arr[i] + "@");
}
// Remove the last `@`
builder = builder.replace(builder.lastIndexOf("@"),
builder.lastIndexOf("@") + 1, "");
System.out.println(builder.toString());
正则表达式的解释:-
(?
-在@
上拆分,前面不带任何字母,也不带任何数字成功,好的,这是您可以尝试的:-
String str = "Australia@2@India@30@UK@4@USA@43";
String[] arr = str.split("(?<![a-zA-Z])@(?<!\\d)");
StringBuilder builder = new StringBuilder();
for(int i = arr.length - 1; i >= 0; i--) {
builder.append(arr[i] + "@");
}
// Remove the last `@`
builder = builder.replace(builder.lastIndexOf("@"),
builder.lastIndexOf("@") + 1, "");
System.out.println(builder.toString());
正则表达式的解释:-
(?
-在@
上拆分,前面没有任何字母,后面没有任何数字
它不是反向的。@USA@43
反向为34@ASU@
是的,但我需要输出的方式是指定的……它不是反向的。@USA@43
反向为34@ASU@
是的,但是我需要输出的方式已指定。。。