用\ n分割字符串\包含以下字符串“abc \ u12345”。

时间:2017-03-27 08:57:34

标签: java unicode split

在发布之前我尝试使用字符串拆分(“\ u”)或\\ u或\ u它不起作用,原因是\ u被视为unicode字符,而在这种情况下它不是。

4 个答案:

答案 0 :(得分:2)

如前所述\ u12345是一个unicode字符,因此作为单个符号处理。 如果你的字符串中有这些已经太晚了。如果你从一个文件或网络上得到这个,你可以读取你的输入,并在你将它存储到你的字符串变量并处理它之前逃避你遇到的每个\或\ u。

如果您再详细说明一下您的任务背景,也许我们可以为您找到其他解决方案。

答案 1 :(得分:2)

Java将其理解为Unicode Character,因此,正确的做法是更新源代码以正确读取它,并避免在不需要时将Unicode传递给java。

一种解决方法可能是将整个字符串转换为字符数组并检查字符是否大于128,如果是,我将数组的其余部分附加到单独的StringBuilder中。看到下面的帮助:

public static void tryMee(String input)
{
    StringBuilder b1 = new StringBuilder();
    StringBuilder b2 = new StringBuilder();
    boolean isUni = false;

    for (char c : input.toCharArray())
    {
        if (c >= 128)
        {
            b2.append("\\u").append(String.format("%04X", (int) c));
            isUni = true;
        }
        else if(isUni) b2.append(c);
        else b1.append(c);
    }   

    System.out.println("B1: "+b1);
    System.out.println("B2: "+b2);
}

答案 2 :(得分:1)

试试这个。你没有正确逃脱

split("\\\\u")

split(Pattern.quote("\\u"))

答案 3 :(得分:1)

            drawMarker(geoLocation: [number, number], assetId: string, type: string, group: IAssetGroup) {

        // Transform the geometry for a map point.
        const coordinates = this.transformCoordinates(geoLocation);
        const pointGeometry = new ol.geom.Point(<any>coordinates);

        // Create the point feature.
        const feature = new ol.Feature({
            geometry: pointGeometry,
            id: assetId,
            group: group
        });

        // Set the style on the feature?
        if (!!group.normalStyle)
            feature.setStyle(group.normalStyle);

        // Add the feature to the vector-set.
        group.vector.addFeature(feature);

        // Add to list of all features.
        this.allFeatures.push(feature);
        this.lookupFeatures[assetId] = feature;

    }