سؤال

وماذا سيكون تطبيق بسيط لطريقة لتحويل سلسلة مثل "مرحبا هناك الجميع" إلى "helloThereEveryone". ودعما لعمليات JavaME فائدة سلسلة وStringBuffer محدودة للغاية.

هل كانت مفيدة؟

المحلول

وتنفيذ البدائي سريع. ليس لدي أي فكرة من القيود المفروضة على J2ME، لذلك آمل تناسبها أو أنه يعطي بعض الأفكار ...

String str = "Hello, there, everyone?";

StringBuffer result = new StringBuffer(str.length());
String strl = str.toLowerCase();
boolean bMustCapitalize = false;
for (int i = 0; i < strl.length(); i++)
{
  char c = strl.charAt(i);
  if (c >= 'a' && c <= 'z')
  {
    if (bMustCapitalize)
    {
      result.append(strl.substring(i, i+1).toUpperCase());
      bMustCapitalize = false;
    }
    else
    {
      result.append(c);
    }
  }
  else
  {
    bMustCapitalize = true;
  }
}
System.out.println(result);

ويمكنك استبدال الأحرف الكبيرة معقد إلحاق مع:

result.append((char) (c - 0x20));

وعلى الرغم من أنه قد يبدو أكثر hackish.

نصائح أخرى

ومع CDC، لديك:

وString.getBytes ()؛ // لتحويل السلسلة إلى صفيف من البايت String.indexOf (كثافة الفصل)؛ // لتحديد مكان بداية من الكلمات String.trim ()؛ // إزالة المسافات

لأدنى / أحرف كبيرة تحتاج إلى إضافة (طرح) 32.

ومع هذه العناصر، يمكنك بناء الأسلوب الخاص بك.

private static String toCamelCase(String s) {
    String result = "";
    String[] tokens = s.split("_"); // or whatever the divider is
    for (int i = 0, L = tokens.length; i<L; i++) {
        String token = tokens[i];
        if (i==0) result = token.toLowerCase();
        else
            result += token.substring(0, 1).toUpperCase() +
                token.substring(1, token.length()).toLowerCase();
    }
    return result;
}

واقتراح:

قد يكون إذا كان يمكنك واحد مكتبة التعبير العادي على J2ME ، هل يمكن استخدامها لتجريد مسافات في سلسلة الخاص بك ...

وحاول البرمجية التالية

public static String toCamel(String str) {
    String rtn = str;
    rtn = rtn.toLowerCase();
    Matcher m = Pattern.compile("_([a-z]{1})").matcher(rtn);
    StringBuffer sb = new StringBuffer();
    while (m.find()) {
        m.appendReplacement(sb, m.group(1).toUpperCase());
    }
    m.appendTail(sb);
    rtn = sb.toString();
    return rtn;
}

وأود أن أقترح على رمز بسيط التالية:

    String camelCased = "";
    String[] tokens = inputString.split("\\s");
    for (int i = 0; i < tokens.length; i++) {
        String token = tokens[i];
        camelCased = camelCased + token.substring(0, 1).toUpperCase() + token.substring(1, token.length());
    }
    return camelCased;

وأود أن تفعل مثل هذا:

private String toCamelCase(String s) {
    StringBuffer sb = new StringBuffer();
    String[] x = s.replaceAll("[^A-Za-z]", " ").replaceAll("\\s+", " ")
            .trim().split(" ");

    for (int i = 0; i < x.length; i++) {
        if (i == 0) {
            x[i] = x[i].toLowerCase();
        } else {
            String r = x[i].substring(1);
            x[i] = String.valueOf(x[i].charAt(0)).toUpperCase() + r;

        }
        sb.append(x[i]);
    }
    return sb.toString();
}

والتحقق من ذلك

import org.apache.commons.lang.WordUtils;

String camel = WordUtils.capitalizeFully('I WANT TO BE A CAMEL', new char[]{' '});

return camel.replaceAll(" ", "");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top