Tag: 字符串

是否存在一个现有的库方法,用于检查Java中的String是大写还是小写?

我知道Java和其他框架中有很多upper()方法,比如Apache commons lang,它将String转换为全部大写。 是否有任何公共库提供像isUpper(String s)和isLower(String s)来检查isLower(String s)所有字符是大写还是小写? 编辑: 关于转换到Upper并与之比较的许多好答案。 我想我应该更具体一点,并说我已经想到了这一点,但我希望能够使用现有方法。 关于可能在apache.commons.lang.StringUtils中包含此内容的好评。 有人甚至提交了补丁(20090310)。 希望我们很快就会看到这一点。 https://issues.apache.org/jira/browse/LANG-471 编辑: 我需要这种方法的方法是将有时候全部大写的酒店名称大写。 如果它们都是小写或大写,我只想把它们大写。 我确实遇到了一些post中提到的非字母字符的问题,最后做了类似这样的事情: private static boolean isAllUpper(String s) { for(char c : s.toCharArray()) { if(Character.isLetter(c) && Character.isLowerCase(c)) { return false; } } return true; } 这个讨论和不同的解决方案(有不同的问题)清楚地表明在commons.lang中需要一个好的实体isAllUpper(String s)方法。 在那之前我想myString.toUpperCase().equals(myString)是最好的方法。

new String()vs literal string performance

StackOverflow上多次询问过这个问题,但没有一个是基于性能的 。 在Effective Java一书中,我们给出了这一点 如果String s = new String(“stringette”); 在循环或频繁调用的方法中,可以不必要地创建数百万个String实例。 改进版本只是以下内容: String s = “stringette”; 此版本使用单个String实例,而不是每次执行时都创建一个新实例。 所以,我尝试了两者,发现性能有了显着提高 : for (int j = 0; j < 1000; j++) { String s = new String("hello World"); } 需要大约399 372纳秒。 for (int j = 0; j < 1000; j++) { String s = "hello World"; } 大约需要23 000纳秒。 […]

使用相同的字符串文字而不是最终变量?

我遇到过一个包含字符串文字“foo”的多种用法的类。 我想知道的是,使用这种方法有什么好处和影响(在对象创建,内存使用和速度方面),而不是将String声明为final并用最终变量替换所有文字? 例如(虽然显然不是真正的单词用法): private static final String FINAL_STRING = “foo”; public void stringPrinter(){ for(int i=0;i<10;i++){ System.out.println(FINAL_STRING); } } 与: public void stringPrinter(){ for(int i=0;i<10;i++){ System.out.println("foo"); } } 哪个更好,为什么(假设字符串值保持不变)? 上面的(第二个)示例是否会导致创建10个String对象,或者JVM是否会意识到实际只使用了一个文字,并创建了一个引用。 如果是这样,将String声明为final是否有任何优势(如第一个例子中所示)? 如果解释的代码确实用单个引用替换字符串文字,那么如果相同的文字出现在多个位置,那么它是否仍然适用: public void stringPrinter(){ for(int i=0;i<5;i++){ System.out.println("foo"); // first occurence System.out.println("foo"); // second occurence } }

文本清理和替换:从Java中的文本中删除\ n

我正在清理Java代码中的传入文本。 该文本包含许多“\ n”,但不是在新行中,而是字面上的“\ n”。 我正在使用String类中的replaceAll(),但是无法删除“\ n”。 这似乎不起作用: String string; string = string.replaceAll(“\\n”, “”); 这也不是: String string; string = string.replaceAll(“\n”, “”); 我想最后一个被识别为一个实际的新行,因此文本中的所有新行都将被删除。 此外,从String中删除不同模式的错误文本的有效方法是什么。 我正在使用正则表达式来检测它们,像HTML保留字符等等和replaceAll,但每次我使用replaceAll时,整个字符串都被读取,对吧? 更新 :谢谢你的答案。 我在这里扩展了这个问题: 文字替换效率 我特别询问效率:D

Java中的字符串模式匹配

我想在输入sting中搜索给定的字符串模式。 对于Eg。 String URL = “https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}” 现在我需要搜索字符串URL是否包含“ /{item}/ ”。 请帮帮我。 这是一个例子。 其实我需要检查URL是否包含匹配“/ {a-zA-Z0-9} /”的字符串

在Java中连接两个字符串的最快方法是什么?

在Java中连接两个字符串的最快方法是什么? 即 String ccyPair = ccy1 + ccy2; 我正在使用cyPair作为HashMap一个键,并且它在一个非常紧凑的循环中被调用来检索值。 当我描述然后这是瓶颈 java.lang.StringBuilder.append(StringBuilder.java:119) java.lang.StringBuilder.(StringBuilder.java:93)

如何获得反向字符串(unicode安全)

让我们假设我们想要恢复以下字符串“áe”。 unicode就是“\ u0061 \ u0301 \ u0065”。 恢复它的天真的方法将是char的char private static String reverseStringNaive(String s) { char[] characters = new char[s.length()]; for (int i = s.length() – 1; i >= 0; i–) { int j = s.length() – i – 1; characters[j] = s.charAt(i); } return new String(characters); } 当我们希望获得“eá”(\ u0065 \ u0061 \ u0301)时,它给了我们“éa”(\ u0065 \ […]

如何在Java中转换大写和小写之间的字符串?

在大写和小写之间用Java转换字符串的方法是什么?

字符串类的subString()函数如何工作

请参阅以下代码。 String s = “Monday”; if(s.subString(0,3).equals(“Mon”){} String s2 = new String(s.subString(0,3)); String s3 = s.subString(0,3); 我知道第2行仍将指向“星期一”,并且有一个新的String对象,其偏移量和计数设置为0,3。 第4行将在字符串池中创建一个新的字符串“Mon”并指向它。 但不确定第5行是否会表现为第2行或第4行。 如果我错误的第2或第4行也请更正..谢谢

在java中解析货币字符串

假设我提供的字符串类似于”$123,456,56.25″ “123’456.67” “$123,456,56.25″或”123’456.67″或类似的东西(带有数字和小数点以及某些分隔符,或’或其他不可预测的东西)。 我需要编写一个方法,它接受类似上面的参数并分别返回一个字符串,如”12345656.25″或”123456.67” 。 能否请您建议最有效和最易读的代码来实现这一目标? 注意:我知道通过每个索引并检查它的Character.isDigit(charAtInedx)是否为Character.isDigit(charAtInedx)或if(charAtInedx == ‘.’)是真的我在寻找效率和效率方面的更优化的解决方案可读性 谢谢。