Java使用分号替换所有逗号,除了引号内的逗号

时间:2014-03-24 20:37:34

标签: java replace bluej

使用CSV样式用户输入替换除java中引号内部以外的所有逗号。

我已经完成了一些研究,但无法理解如何/从何处开始这样做,不确定我是否可以在不添加任何代码的情况下提出问题但是,如果有人可以通过建议使用的函数来帮助我研究这样做我真的很感激

p.s我看过其他一些帖子但是从我读到的帖子看不起来。

3 个答案:

答案 0 :(得分:2)

2条建议:

  1. 使用像commons-csv这样的CSV解析库来标记输入,然后使用您想要的任何字符重新加入它。 CSV库非常智能,不会在引号内用逗号分隔。
  2. 实现有限状态机(2个状态:在引号和外引号内)扫描输入,跟踪当前字符是否在引号内。当您找到逗号并且不在引号内时,请将其替换。

答案 1 :(得分:0)

这是一些伪代码:

Read character
if character is ','
   replace with ';'
else if character is '"'
   read character until it is '"'
else
   do nothing
Repeat

答案 2 :(得分:0)

如何编写自己的解析器,就像

一样
set flag which checks if we are inside quotation to false
create buffer for changed version of original string (StringBuilder )

for (each character in string)
    if (character is comma and is inside quotation)
        add semicolon to StringBuilder
    else
        add character to StringBuilder
        if (character is quotation mark)
            reverse quotation flag

when you are done with iterating over characters get content of StringBuilder