Tag: string

将句子中的第一个单词用多个句子大写

例如: String s =“这是a.line是.over” 应该出来 “这是a.Line is.Over” 我想过两次使用字符串标记器 -first split using”.” -second split using ” ” to get the first word -then change charAt[0].toUpper 现在我不确定如何使用字符串标记符的输出作为另一个的输入? 我也可以使用split方法生成我尝试过的数组 String a=”this is.a good boy”; String [] dot=a.split(“\\.”); while(i<dot.length) { String [] sp=dot[i].split(" "); sp[0].charAt(0).toUpperCase();// what to do with this part?

从java项目中提取所有字符串

我有相当多的源文件,我需要解析并提取所有字符串文字,并将它们作为播放旧的Java常量放在一个文件中。 举个例子: Label l = new Label(“Cat”); 会成为: Label l = new Label(Constants.CAT); 在Constants.java我会: public final static String CAT = “Cat”; 我不希望字符串在属性文本文件中外部化。 一个原因是一致性和代码可读性。 另一个是我们的客户端代码使用GWT ,它不支持Java属性文本文件机制。 我可以写一些解析器(可能使用ant replace任务)? 但我想知道IDE已经自动执行此类操作。

如何检查字符是否为元音?

这个Java代码给我带来了麻烦: String word = int y = 3; char z; do { z = word.charAt(y); if (z!=’a’ || z!=’e’ || z!=’i’ || z!=’o’ || z!=’u’)) { for (int i = 0; i==y; i++) { wordT = wordT + word.charAt(i); } break; } } while(true); 我想检查单词的第三个字母是否是非元音,如果是,我希望它返回非元音和前面的任何字符。 如果它是一个元音,它会检查字符串中的下一个字母,如果它也是一个元音,那么它会检查下一个字母,直到它找到一个非元音。 例: word = Jaemeas然后wordT必须= Jaem 例2: word = Jaeoimus然后wordT必须= […]

实习字符串,字符串池和perm空间上的垃圾收集

在探索了java的字符串内部结构后,我对所谓的“烫发空间”感到困惑。 我最初的理解是它持有String 文字以及类元数据,如本问题所述 。 我还阅读了String.intern()方法,并将String放入String Pool中,返回对它的唯一实例的引用。 我的理解是,这是与JVM的perm空间中存在的字符串文字相同的字符串池。 对我来说,“烫发空间”可以修改是不可能的(毕竟它是永久性的,是吗?)。 但后来我发现这个问题 ,EJP对接受的答案的最高投票评论解释了这一点 现在,实习生的字符串已经可以使用GC了。 暗示GC在perm空间上运行,这似乎不是永久性的。 这如何调和? GC是否检查了烫发空间中的所有内容? GC是否检查字符串池中的所有内容,包括源中的字符串文字? 内联字符串是否有第二个字符串池? GC是否只知道在收集时查看实习生的字符串? 或者这个评论是错误的,并且实际上是一个字符串阻止它被GC’d(我希望不是这样)?

如何在Java中读取/转换InputStream为String?

如果你有一个java.io.InputStream对象,你应该如何处理该对象并生成一个String ? 假设我有一个包含文本数据的InputStream ,我想将它转换为String ,所以例如我可以将它写入日志文件。 获取InputStream并将其转换为String的最简单方法是什么? public String convertStreamToString(InputStream is) { // ??? }

字符串替换反斜杠

如何用字符串替换反斜杠。 输入源字符串: sSource = “http://www.example.com\/value”; 在上面的String中我想用“/”替换“\ /”; 更换后的预期输出: sSource = “http://www.example.com/value”; 我从第三方获取Source String,因此我可以控制String的格式。 这就是我的尝试 试验1: sSource.replaceAll(“\\”, “/”); exception索引1附近出现意外内部错误 试验2: sSource.replaceAll(“\\/”, “/”); 没有例外,但没有做必要的替换。 什么都不做。 试验3: sVideoURL.replace(“\\”, “/”); 没有例外,但没有做必要的替换。 什么都不做。

Java中的字符串比较和字符串实习

何时应该将String作为对象进行比较,何时应该使用equals方法? 为了确保,我总是使用equals ,但这似乎不是很有效。 在什么情况下我可以确定string1 == string2是安全的? 谢谢!

如何在java中的String中查找整个单词

我有一个字符串,我必须解析不同的关键字。 例如,我有字符串: “我会在123woods来见你” 我的关键字是 ‘123woods”森林’ 我应该在每次有比赛时报告。 还应考虑多次出现。 然而,对于这个,我应该只在123woods上获得一场比赛,而不是在树林上。 这消除了使用String.contains()方法。 此外,我应该能够有一个列表/一组关键字,并同时检查它们的发生。 在这个例子中,如果我有’123woods’和’come’,我应该得到两次。 方法执行在大文本上应该有点快。 我的想法是使用StringTokenizer,但我不确定它是否会表现良好。 有什么建议么?

了解CaseInsensitiveComparator中的逻辑

任何人都可以解释String.java的以下代码,特别是为什么有三个if语句(我标记为//1 , //2和//3 )? private static class CaseInsensitiveComparator implements Comparator, java.io.Serializable { // use serialVersionUID from JDK 1.2.2 for interoperability private static final long serialVersionUID = 8575799808933029326L; public int compare(String s1, String s2) { int n1=s1.length(), n2=s2.length(); for (int i1=0, i2=0; i1<n1 && i2<n2; i1++, i2++) { char c1 = s1.charAt(i1); char c2 = s2.charAt(i2); […]

为什么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搞砸了这样?