2

文字列の「」の外側にあるすべての空白を削除するにはどうすればよいですか?例えば:

0507 ? "Y e a" : "No"

戻る必要があります:

0507?"Y e a":"No"

ありがとうございました。

4

4 に答える 4

3

試す

    String s = "0507 ? \"Y e a\" : \"No\"".replaceAll(" +([?:]) +", "$1");
    System.out.println(s);

プリント

0507?"Y e a":"No"
于 2013-02-17T03:55:31.107 に答える
1

-「st.split()関数を使用して」で分割できます

-次に、配列の偶数インデックスにのみst.replaceAll( "\ s"、 "")を適用します

-次に、Apache Commons lang StringUtils.join(などのさまざまなユーティリティを使用して配列のすべての要素を連結します。

例えば:

元の文字列-0507?"Y e a":"いいえ"

"..... {0507?、Y ea、:、No}で分割した後

st.replaceAll( "\ s"、 "")を配列の偶数インデックスに適用します.... {0507?、Y ea、:、No}

StringUtils.join(s、 "\" ")...... 0507を使用して連結しますか?" Y e a ":" No "

サンプルコード:

    String input="0507 ? \"Y e a\" : \"No\"";
    String[] inputParts = input.split("\"");

    int i = 0;
    while(i< inputParts.length)
    {
        inputParts[i]=inputParts[i].replaceAll("\\s", "");
        i+=2;
    }

    String output = StringUtils.join(inputParts, "\"");
于 2013-02-17T03:47:34.783 に答える
1

または、 StringTokenizerを試してください:読み取りトークナイザーは、デフォルトの区切り文字セットである「\ t \ n \ r \ f」を使用します。スペース文字、タブ文字、改行文字、キャリッジリターン文字、およびフォームフィード文字です。 。

    StringTokenizer tok=new StringTokenizer(yourString);
    String temp="";

    while(tok.hasMoreElements()){
        temp=temp+tok.nextElement();
    }

    System.out.println("temp"+temp);
于 2013-02-17T03:59:41.453 に答える
1

このコード

static Pattern groups = Pattern.compile("([^\\\"])+|(\\\"[^\\\"]*\\\")");
public static void main(String[] args) {
    String test1="0507 ? \"Y e a\" : \"No\"";
    System.out.println(replaceOutsideSpace(test1));
    String test2="0507 ?cc \"Y e a\" :bb \"No\"";
    System.out.println(replaceOutsideSpace(test2));
    String test3="text text  text   text \"Y e a\" :bb \"No\"  \"\"";
    System.out.println(replaceOutsideSpace(test3));
    String test4="text text  text   text \"Y e a\" :bb \"No\"  \"\" gaga gag   ga  end";
    System.out.println(replaceOutsideSpace(test4));
}
public static String replaceOutsideSpace(String text){
    Matcher m = groupsMatcher(text);
    StringBuffer sb = new StringBuffer(text.length());
    while(m.find()){
        String g0=m.group(0);
        if(g0.indexOf('"')==-1){g0=g0.replaceAll(" ", "");}
        sb.append(g0);
    }
    return sb.toString();
}
private synchronized static Matcher groupsMatcher(String text)
{return groups.matcher(text);}   

プリント

0507?"Y e a":"No"
0507?cc"Y e a":bb"No"
texttexttexttext"Y e a":bb"No"""
texttexttexttext"Y e a":bb"No"""gagagaggaend
于 2013-02-17T14:52:41.960 に答える