【问题标题】:How to modify this String in Java?如何在 Java 中修改这个字符串?
【发布时间】:2012-02-18 08:31:16
【问题描述】:

假设我有两个字符串如下:

String name = "EXAMPLE_MODEL_1";
String actionName = "ListModels";

我希望得到的字符串如下:

String result = "ExampleModel1ListModels";

我尝试了以下代码:

String result = name.toLowerCase().replaceAll("_", "");
result = result.concat(actioName);

我得到的结果值为“examplemodel1ListModels”。但预期的是“ExampleModel1ListModels”。

【问题讨论】:

  • 我不明白你的问题,你得到了你所期望的,如果你有任何错别字,请更正
  • 我可能是错的,但如果我理解正确toLowerCase 应该将结果转换为小写。这不能解释为什么你没有得到原始大写的结果吗?
  • 它是由@lucifer 编辑的,有一个错字示例是Exampole
  • 因为那是她的问题中输入的错误,你们都没有标记。
  • 人们很想回答

标签: java string


【解决方案1】:

您正在使用toLowerCase() 方法,因此您会得到这样的结果。请勿使用此功能。

【讨论】:

  • 那该用哪个函数呢?
  • @Beginner 你需要找到一些函数来将你的字符串转换为大写而不是小写。
【解决方案2】:

name 字符串需要替换下划线——你已经做到了。在你这样做之前,你需要convert it to title case

然后,简单地连接两个字符串。

【讨论】:

    【解决方案3】:
    【解决方案4】:

    使用 Guava 的CaseFormat

    String result = LOWER_UNDERSCORE.to(UPPER_CAMEL, "EXAMPLE_MODEL_1") + "ListModels";
    

    【讨论】:

      【解决方案5】:

      Apache commons-lang 具有可以帮助您的实用程序类。以下是我的想法

      1. 将名称转换为小写
      2. 使用 String capitalizeFully(String str, char[] delimiters) 与分隔符为 _
      3. 从第 1 步的结果中删除空格
      4. 连接两者

      【讨论】:

        【解决方案6】:

        使用 Apache 的 WordUtil.Capitalize 方法。

        【讨论】:

          【解决方案7】:

          尝试使用以下代码(我正在编辑并粘贴完整代码)

          import java.io.IOException;
          public class StringTest{
          
              public static void main(String[] arg) throws IOException{
                  String name = "EXAMPLE_MODEL_1"; String actionName = "ListModels";
                  String result = toProperCase(name.toLowerCase().replaceAll("_", " "))+actionName;
                  result= result.replaceAll(" ","");
                  System.out.println(result);
          
              }
              public static String toProperCase(String theString) throws java.io.IOException{
                  java.io.StringReader in = new java.io.StringReader(theString.toLowerCase());
                   boolean precededBySpace = true;
                   StringBuffer properCase = new StringBuffer();    
                       while(true) {      
                      int i = in.read();
                        if (i == -1)  break;      
                          char c = (char)i;
                          if (c == ' ' || c == '"' || c == '(' || c == '.' || c == '/' || c == '\\' || c == ',') {
                            properCase.append(c);
                            precededBySpace = true;
                         } else {
                            if (precededBySpace) { 
                           properCase.append(Character.toUpperCase(c));
                         } else { 
                               properCase.append(c); 
                         }
                         precededBySpace = false;
                      }
                      }
          
                  return properCase.toString();    
          
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-10-04
            • 1970-01-01
            • 2021-08-24
            • 1970-01-01
            • 2015-06-22
            • 1970-01-01
            • 2021-05-14
            • 1970-01-01
            相关资源
            最近更新 更多