Tag: 字符串

使用Java中的长字符串(heredocs) – 可读方法?

我需要处理包含Java中的换行符的长字符串。 这些是用于HTML生成的,但它并不是最重要的。 我知道Java在没有heredocs的情况下是残废的。 但是我还可以使用其他机制: 1)字符串连接 (或StringBuilders),不是非常易读和可复制粘贴。 2)在.properties文件中存储字符串,这些文件不是非常易读,但具有更高的复制性。 3)将每个“heredoc”存储在单独的.txt文件中,非常易读且易于复制,但会产生大量的txt文件。 4)模板引擎,如Velocity或Freemarker – 将设计移出Java,需要大量的地图操作,这将是相当不错的,但Velocity语法和循环/如果能力不像Smarty那样可读 每个人都有利弊,我想选择3,但由于纯粹的意识形态原因,管理层更喜欢1。 我想在Java中使用heredocs有一些标准,可能是库让事情变得更容易。 我很感激任何建议(有很好的论据)如何使用heredocs。 感谢名单

将多个文件合并为一个

我在一些位置有4个不同的文件,如:D:\ 1.txt D:\ 2.txt D:\ 3.txt和D:\ 4.txt 我需要创建一个新文件NewFile.txt ,它应该包含上述文件中存在的所有内容1.txt,2.txt,3.txt 4.txt ……. 所有数据都应出现在New Single文件(NewFile.txt)中。 请建议我在java或Groovy中做同样的想法….

字符串拆分问题使用“*”

让我们说有一个字符串…… String myString = “my*big*string*needs*parsing”; 我想要的是将字符串拆分为“我的”,“大”,“字符串”等等。所以我试试 myString.split(“*”); 返回java.util.regex.PatternSyntaxException:在索引0附近悬空元字符’*’ *是正则表达式中的特殊字符,所以我尝试转义…. myString.split(“\\*”); 同样的例外。 我想有人会知道一个快速的解决方案。 谢谢。

将String aaaabbbbddd转换为a4b4d3

我正在努力开始练习面试问题,我遇到了这个问题: 将String aaaabbbbddd转换为a4b4d3 您基本上希望将现有字符串转换为每个唯一字符出现的字符串以及字符出现的次数。 这是我的解决方案,但我认为它可以被提炼成更优雅的东西: String s = “aaaabbbbddd”; String modified = “”; int len = s.length(); char[] c = s.toCharArray(); int count = 0; for (int i = 0; i < len; i++) { count = 1; for (int j = i + 1; j < len; j++) { if (c[i] == ' ') […]

获取字符串“600sp”的整数部分的最佳方法是什么?

我有一个字符串,说“600sp”,我希望从中得到整数部分(600)。 如果我执行Integer.valueOf(“600sp”)由于字符串中遇到的非数字值“s”,我得到一个exception。 获取整数部分的最快最干净的方法是什么? 谢谢!

String.substring()制作底层char 值的副本

与String.substring性能注意事项有关的问题。 在Java 1.7.0_06之前, String.substring()方法返回一个新的String对象,该对象与其父对象共享相同的底层char数组,但具有不同的偏移量和长度。 为了避免在只需要保留一个小子字符串时在内存中保留一个非常大的字符串,程序员习惯于编写如下代码: s = new String(queryReturningHugeHugeString().substring(0,3)); 从1.7.0_06开始,没有必要创建新的String因为在Oracle的String实现中,子串不再共享其底层char数组。 我的问题是:我们可以依赖Oracle(和其他供应商)在未来的某个版本中不返回char[]共享,只需执行s = s.substr(…) ,或者我们应该只显式创建一个新的String如果JRE的未来版本再次开始使用共享实现?

如何将字符串写入OutputStream

如何创建实现OutputStream并将内容写入其中的类? 例如,以下打印方法是错误的,不会编译。 有哪些选择或更好的技术? public class FooBarPrinter{ private OutputStream o; public FooBarPrinter(OutputStream o){ this.o=o; } public void print(String s){ o.write(s); } }

如何将包含字符转义序列的字符串转换为char?

我正在寻找一种方法将包含字符转义序列的字符串转换为表示的字符。 因此,例如,我想将字符串\” (它有两个字符,一个反斜杠和一个双引号)解析为char ” 。 所以,一个字符数组成一个字符。 所以可能会做这样的事情,反之亦然: package test; public class Test { private static char parseChar(String string) { char c = 0; if (“\\n”.equals(string)) { c = ‘\n’; }else if (“\\t”.equals(string)) { c = ‘\t’; }else if (“\\r”.equals(string)) { c = ‘\r’; }else if (“\\f”.equals(string)) { c = ‘\f’; }else if (“\\b”.equals(string)) { c […]

java中的字符串POOL

Java具有字符串池,因为字符串类的对象是不可变的。 但我的问题是 – 制作String POOL需要什么? 为什么字符串类没有像其他类一样保存自己的值? 内部JVM是否需要一些字符串,或者这是性能优势。 如果有,怎么样?

如果字符串池的大小超过怎么办?

在Java中 String Constant Pool中的字符串文字不是垃圾收集的,因为它们是从运行时实例创建的引用表中引用的,以便优化空间。 如果字符串文字池的大小超过那么,因为字符串文字池中的每个字符串都有引用,因此它不符合GC的条件。 它是如何由JVM处理的?