在Java中,在While循环期间替换字符串中的字符

在Java中,在While循环期间替换字符串中的字符,java,string,while-loop,Java,String,While Loop,为什么这样不行 while ((line = file.readLine()) != null) { String myLine = line; input += "[" + myLine.replace(":", "]") + '\n'; } 插入前导“[”时,该行后跟新行(\n),但它不会替换我的字符,即使它出现在每一行上 正如您所知,我正在打开一个文件,逐行读取它,并尝试依次修改每一行。除字符替换外,所有操作都正常

为什么这样不行

while ((line = file.readLine()) != null) {
            String myLine = line;
            input += "[" + myLine.replace(":", "]") + '\n';
            }
插入前导“[”时,该行后跟新行(\n),但它不会替换我的字符,即使它出现在每一行上

正如您所知,我正在打开一个文件,逐行读取它,并尝试依次修改每一行。除字符替换外,所有操作都正常

这是我的示例文本

gen|1|1|בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃ 
这就是我想要的

[gen|1|1|]בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽר 
这就是我得到的

[gen|1|1|בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃ 

感谢您的帮助,因为我是新来这里和编程的。

这是因为输入文本不包含冒号。看起来像冒号的字符实际上是“׃”U+05C3:PASUQ的希伯来标点符号


正在尝试使用“\u05C3”而不是“:”.

文件内容是什么样子的?给我们看一些输入、预期输出和实际输出的示例。我添加了一些示例。实际上,这不起作用,因为该字符实际上是文本从右到左希伯来语部分的最后一个字符。很好的提示!这肯定是问题所在,但它在l的末尾插入了我的括号是的,我在发布后意识到了这一点。这是因为每行中都混合了从左到右和从右到左的文本。实际上,“׃”是从右到左文本中的最后一个字符。当你将其替换为“]”时,它会出现在末尾,因为“]”是从左到右的字符。我想你可能需要做一些复杂的正则表达式匹配来解决这个问题。非常感谢。我能做到。关于希伯来语和英语之间转换的文档阅读的任何建议。