gpt4 book ai didi

java - 为什么 str.trim() 不删除某些单词的所有空格?

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:34 25 4
gpt4 key购买 nike

我正在尝试获取一个文本文件,其中包含类似汇编的代码,并将其解析为 java 中的数组。文本文件如下所示:

        begin
LDA #10 ;load $0A into accumulator
LDX $15 ;load $15m into X
_loop TAX ;transfer A to X
SEC ;set carry flag
end

目前,我的代码已逐行读取文本文件,并将每一行作为单独的字符串存储在数组中。这工作得很好,并且代码按预期保留了字符串中的空格。接下来,我将数组中的每一行传递给下面的代码,然后使用 str.split("") 分割每一行,然后修剪每个新字符串,然后将其放入另一个数组并返回数组。

所以为了清楚起见,这个过程是这样的:

  1. LDA #10 ;将 $0A 加载到累加器一大行
  2. dividedLine[] = ["LDA", "#10", ";load", "etc.."] 行被划分为多个元素

唯一的问题是,对于某些单词,str.trim() 完全删除了空格,但对于其他一些单词,空格仍然存在。我认为这可能与我正在使用的选项卡有关,但我不确定。

这是我得到的输出:

beginLDA#10;load$0AintoaccumulatorLDX$15;load$15mintoX_loop TAX;transferAtoXSEC;setcarryflagend

正如您所看到的,“loop”和“TAX”之间以及“SEC”和“;set”之间存在大量不应存在的空格。

这是我正在使用的原始文本文件,因为我对其进行了一些更改以使其更易于在堆栈上阅读:https://gist.github.com/anonymous/c802ca31d5402c702ada237bea47f223

这是我的代码:

public String[] divideLine(String line) 
{
String[] lineArray = line.split(" ");
for(String str : lineArray)
{
str = str.trim();
System.out.print(str);
}
return lineArray;
}

如果是制表符导致问题,有没有办法在处理每一行之前将所有制表符转换为空格?

最佳答案

如果您拆分单个空白字符,那么这些片段将在某些位置有制表符,这些位置会解释您看到的空白。

例如,原始文件的第五行是

SEC ;设置进位标志,或制表符为\t,

\tSEC\t\t;设置进位标志

"SEC ;设置进位标志".split("") 返回数组

[ SEC ;设置、进位、标志]

或者使用制表符作为\t,你有

[\tSEC\t\t;设置、进位、标志]

正如其他人提到的,您可以更改代码以在不同的正则表达式上进行拆分,例如 "\\s+"

关于java - 为什么 str.trim() 不删除某些单词的所有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48674410/

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