gpt4 book ai didi

Java:根据分隔符解析字符串

转载 作者:行者123 更新时间:2023-11-30 04:12:57 30 4
gpt4 key购买 nike

我必须设计一个界面,它从机器获取数据然后绘制它。我已经设计了获取部分,它获取格式为 A&B@.13409$13400$13400$13386$13418$13427$13406$13383$13406$13412$13419$00000$00000$ 的字符串。

前五名 A&B@.字符是标识符。请注意,第五个字符是 new line feed即 ASCII 0xA .

我写的函数 -

   public static boolean checkStart(String str,String startStr){

String Initials = str.substring(0,5);
System.out.println("Here is start: " + Initials);
if (startStr.equals(Initials))
return true;
else
return false;
}

显示Here is start: A&B@.哪个是对的。

问题 1:为什么我们需要采取str.substring(0,5)即当我使用 str.substring(0,4) 时它仅显示 - Here is start: A&B@即缺少 new line feed 。为什么是New Line feed做出这种改变。

要进一步提取剩余字符串,我必须使用 s.substring(5,s.length())而不是s.substring(6,s.length())

s.substring(6,s.length())产生3409$13400$13400$13386$13418$13427$13406$13383$13406$13412$13419$00000$00000$即缺少标识符 A&B@. 之后的第一个字符

问题2:

我的解析函数是:

public static String[] StringParser(String str,String del){
String[] sParsed = str.split(del);
for (int i=0; i<sParsed.length; i++) {
System.out.println(sParsed[i]);
}
return sParsed;
}

它正确解析字符串 String s = "A&B@.13409/13400/13400/13386/13418/13427/13406/13383/13406/13412/13419/00000/00000/";并将函数调用为 String[] tokens = StringParser(rightChannelString,"/");

但是对于字符串,例如 String s = "A&B@.13409$13400$13400$13386$13418$13427$13406$13383$13406$13412$13419$00000$00000$" ,调用String[] tokens = StringParser(rightChannelString,"$");根本不解析字符串。

我无法弄清楚为什么会出现这种行为。谁能告诉我解决办法吗?

谢谢

最佳答案

关于问题1,java API说substring方法需要2个参数:

  • beginIndex 开始索引,包含
  • endIndex 结束索引,独占

所以在你的例子中

String: A&B@.134
Index: 01234567

substring(0,4) = 索引 0 到 3,因此 A&B@,这就是为什么您必须将 5 作为第二个参数来恢复行分隔符。

关于问题2,我猜测split方法的参数是正则表达式,$是一个特殊字符。为了匹配美元符号,我想您必须使用\字符对其进行转义(因为\是字符串中的特殊字符,因此您也必须对其进行转义)。

String[] tokens = StringParser(rightChannelString,"\\$");

关于Java:根据分隔符解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177083/

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