为什么java中的String.replaceAll()需要在正则表达式中使用4个斜杠“\\\\”来实际替换“\”?

我最近注意到,当涉及转义字符“\”(斜杠)时,String.replaceAll(正则表达式,替换)表现得非常奇怪。 例如,考虑有一个带有filepath的字符串 – String text = “E:\\dummypath” ,我们想用”/”替换”\\” “/” 。 text.replace(“\\”,”/”)给出输出”E:/dummypath” text.replaceAll(“\\”,”/”)而text.replaceAll(“\\”,”/”)引发exceptionjava.util.regex.PatternSyntaxException 。 如果我们想用replaceAll()实现相同的function,我们需要将其写为text.replaceAll(“\\\\”,”/”) 一个值得注意的区别是replaceAll()将其参数作为reg-ex,而replace()具有参数character-sequence! 但text.replaceAll(“\n”,”/”)与其char序列等效text.replace(“\n”,”/”)完全相同 深入挖掘:当我们尝试其他一些输入时,可以观察到更奇怪的行为。 让我们分配text=”Hello\nWorld\n” 现在, text.replaceAll(“\n”,”/”) , text.replaceAll(“\\n”,”/”) , text.replaceAll(“\\\n”,”/”)所有这三个给出相同的输出Hello/World/ Java以我认为最好的方式真的搞砸了reg-ex! 没有其他语言似乎在reg-ex中有这些有趣的行为。 有什么特别的原因,为什么Java搞砸了这样?

使用Java在本地计算机上获取MAC地址

我可以用 ip = InetAddress.getLocalHost(); NetworkInterface.getByInetAddress(ip); 获取mac地址,但是如果我在离线机器中使用此代码则不起作用。 那么, 我怎样才能获得Mac地址?

如何在JavaFX LineChart上添加形状

我将在LineChart上添加一些形状。 我将LineChart和AnchorPane放入StackPane 。 我通过从图表系列中获取x和y坐标将形状添加到AnchorPane 。 这是一个例子。 LineChartApp.java package shapes; import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; public class LineChartApp extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setScene(new Scene(new ChartContent())); primaryStage.setMaximized(true); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ChartContent.java package shapes; import java.util.ArrayList; import java.util.List; import javafx.animation.KeyFrame; import javafx.animation.Timeline; […]

JAVA SAX解析器拆分调用字符()

我正在做一个解析XML中的一些数据的项目。 例如,XML就是 abcdefghijklmno 我需要解析“abcdefghijkmnlp”。 但是当我测试我的解析时,我发现了一个大问题: public class parser{ private boolean hasABC = false; //Constructor HERE …………………. …………………. @Override public void startDocument () throws SAXException{ } @Override public void endDocument () throws SAXException{ } @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException{ if (“abc”.equalsIgnoreCase(localName)) { this.hasABC = true; } } @Override […]

阻止窗口显示直到完全绘制?

我正在开发一个Java程序,它接收大量文件(最多3000个)和一个相关的1/0数组。 目前我有一个数组的可视化,其中有一个网格,其中每个框填充为黑色为1或白色为0.当绘制它运行良好但需要大约一分钟才能完全加载(并且可能在此期间锁定计算机。 )有没有办法:1,在完成之前不要显示窗口 (即JFrame创建, //画窗口 frame.setVisible(真)) 和2,跟踪进程的进度,以便我可以使用进度条吗? 编辑:我可以运行一个线程来绘制它,然后简单地创建一个while循环只在线程完成后显示它吗?

使用前景标签将图像添加到Jbutton

朋友们,我尝试使用seticon方法将图像添加到我的Jbutton,但它隐藏了按钮上的文本标签。 这是代码: try { Image img = ImageIO.read(getClass().getResource(“image.jpg”)); studentsButton.setIcon(new ImageIcon(img)); } catch (IOException ex) { } 我在没有init()/ paint()/ graphics的eclipse中使用swing,它在main方法中的简单框架。

如何更改鼠标按下时的JButton颜色?

我想根据鼠标事件(鼠标进入,退出,按下等)获得自定义颜色。 所以为了实现这一点,我写了下面的代码。 它对一切都很好,除了鼠标按下事件的情况,它什么都不做。 它只有在我覆盖UIManager的颜色时才有效,就像这个UIManager.put(“Button.select”, Color.red); 。 UIManager问题在于它会改变我的所有按钮。 任何人都可以告诉我,我可能做错了什么,或者最好的办法是什么,我要做的是什么? 我的代码: final JButton btnSave = new JButton(“Save”); btnSave.setForeground(new Color(0, 135, 200).brighter()); btnSave.setHorizontalTextPosition(SwingConstants.CENTER); btnSave.setBorder(null); btnSave.setBackground(new Color(3, 59, 90)); btnSave.addMouseListener(new MouseListener() { @Override public void mouseReleased(MouseEvent e) { btnSave.setBackground(new Color(3, 59, 90)); } @Override public void mousePressed(MouseEvent e) { // Not working 🙁 btnSave.setBackground(Color.pink); } @Override public void mouseExited(MouseEvent […]

如何使用hibernate生成Custom Id,同时它必须是表的主键

这是我的pojo课程 @Entity public class Department { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name=”Department_Id”) private Integer deptId; @Column(name=”Department_Name”,unique=true,nullable=false) private String deptName; @Column(name=”Department_Description”) @NotNull private String deptDesc; //geters and setters 我想要的是department_id必须是此Department表的主键,此键的条目必须为DEP0001,DEP0002,DEP0003

PrintStream类型中的printf(String,Object )方法不适用于参数(…)

为什么我通过简单的printf调用得到以下编译错误? 我的代码: import java.util.Scanner; public class TestCodeBankAccInputs { public static void main(String[] args) { String displayName = “Bank of America Checking”; int balance = 100; System.out.printf(“%s has %7.2f”, displayName, balance); } } 在编译时我收到以下错误: Exception in thread “main” java.lang.Error: Unresolved compilation problem: The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments […]

在java的好看的进展酒吧

我想知道你是否有人知道如何在Java中显示一个漂亮的进度条,主要是使用Swing,虽然我不介意使用第三方库。 我一直在看JProgressBar教程,但没有一个是指造型吧。 阅读API我找到了一个返回ProgressBarUI对象的getUI方法,但是我没有看到很多方法来自定义那个。 我想要的是添加圆角,改变背景和前景色,宽度,长度,通常。 谢谢!