Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在单词之间拆分具有不同字符的字符串?_Java_String_Split - Fatal编程技术网

Java 如何在单词之间拆分具有不同字符的字符串?

Java 如何在单词之间拆分具有不同字符的字符串?,java,string,split,Java,String,Split,我目前有一个程序,它将一组值从hashmap传递到另一个类,该类将它们存储为字符串。字符串中存储的信息如下所示: Station 1=[1, Task 1, 10, false, 0, java.awt.Color[r=255,g=0,b=0]] Station 2=[2, Task 2, 10, false, 0, java.awt.Color[r=0,g=0,b=255]] Station 3=[3, Task 3, 10, false, 0, java.awt.Color[r=0,g=25

我目前有一个程序,它将一组值从hashmap传递到另一个类,该类将它们存储为字符串。字符串中存储的信息如下所示:

Station 1=[1, Task 1, 10, false, 0, java.awt.Color[r=255,g=0,b=0]]
Station 2=[2, Task 2, 10, false, 0, java.awt.Color[r=0,g=0,b=255]]
Station 3=[3, Task 3, 10, false, 0, java.awt.Color[r=0,g=255,b=0]]
Station 4=[4, Task 4, 10, false, 0, java.awt.Color[r=255,g=200,b=0]]
Station 5=[5, Task 5, 10, false, 0, java.awt.Color[r=0,g=0,b=0]]
我试着把他们分成(f.e.):

我第一次尝试拆分每个字符串,但由于在设置颜色值的字符串的最后一部分有“=”和“,”,所以它会变得一团糟

我也尝试了StringTokenizer(),但最后一部分也遇到了问题

是否有更简单或有效的方法根据需要拆分这些字符串?欢迎提出任何建议

提前感谢您的时间,如果需要代码,请告诉我

编辑:

我已经通过从hashmaps正确地传递参数修复了我的特殊问题

public MultiMap stationmap = new MultiHashMap( );

public Collection getkeyValues(String s) {
   Collection values = (Collection) stationmap.get(s);
   return values;
}
通过这种方式,我可以将这个集合传递给我需要它们的类,并且我可以进一步迭代它以获得键的值


我将保留此选项,因为进一步的答案可能会帮助有类似字符串问题的人

如果控制字符串的格式,则可以将其格式化并在其中使用解析。

如果控制字符串的格式,您可以将它们格式化为格式并在其中使用解析。

我不知道您为什么以这种方式工作:)另一个类接受HashMap并以同样的方式处理它不是更容易吗?如果将其输出到文件,则可以将其序列化;hashmaps是可序列化的。

我不知道您为什么以这种方式工作:)另一个类接受HashMap并以同样的方式处理它不是更容易吗?如果将其输出到文件,则可以将其序列化;哈希图是可序列化的。

使用谷歌的库番石榴

public static List<String> convertToList(String str) {
    List<String> list = Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
    /**
     Returns:
            Station 1
            1
            Task 1
            10
            false
            0
            java.awt.Color[r=255,g=0,b=0]]
             */


    int lastIndex = list.size() - 1;
    String last = list.get(lastIndex);
    String amendedValue = last.substring(0, last.length()-1);
    list.set(lastIndex, amendedValue);
    // Convert the last element "java.awt.Color[r=255,g=0,b=0]]" to  "java.awt.Color[r=255,g=0,b=0]"


    return list;
}
publicstaticlist转换器列表(stringstr){
List List=Lists.newArrayList(Splitter.on(CharMatcher.anyOf(“=[,”))).ommitEmptyStrings().trimResults().limit(7.split(str));
/**
返回:
1号站
1.
任务1
10
假的
0
java.awt.Color[r=255,g=0,b=0]]
*/
int lastIndex=list.size()-1;
字符串last=list.get(lastIndex);
String amendvalue=last.substring(0,last.length()-1);
list.set(lastIndex,amendValue);
//将最后一个元素“java.awt.Color[r=255,g=0,b=0]]”转换为“java.awt.Color[r=255,g=0,b=0]”
退货清单;
}
或:

公共静态列表转换器列表2(字符串str){
str=str.substring(0,str.length()-1);
return Lists.newArrayList(Splitter.on(CharMatcher.anyOf(“=[,”)).ommitEmptyStrings().trimResults().limit(7.split(str));
}

使用谷歌的图书馆番石榴

public static List<String> convertToList(String str) {
    List<String> list = Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
    /**
     Returns:
            Station 1
            1
            Task 1
            10
            false
            0
            java.awt.Color[r=255,g=0,b=0]]
             */


    int lastIndex = list.size() - 1;
    String last = list.get(lastIndex);
    String amendedValue = last.substring(0, last.length()-1);
    list.set(lastIndex, amendedValue);
    // Convert the last element "java.awt.Color[r=255,g=0,b=0]]" to  "java.awt.Color[r=255,g=0,b=0]"


    return list;
}
publicstaticlist转换器列表(stringstr){
List List=Lists.newArrayList(Splitter.on(CharMatcher.anyOf(“=[,”))).ommitEmptyStrings().trimResults().limit(7.split(str));
/**
返回:
1号站
1.
任务1
10
假的
0
java.awt.Color[r=255,g=0,b=0]]
*/
int lastIndex=list.size()-1;
字符串last=list.get(lastIndex);
String amendvalue=last.substring(0,last.length()-1);
list.set(lastIndex,amendValue);
//将最后一个元素“java.awt.Color[r=255,g=0,b=0]]”转换为“java.awt.Color[r=255,g=0,b=0]”
退货清单;
}
或:

公共静态列表转换器列表2(字符串str){
str=str.substring(0,str.length()-1);
return Lists.newArrayList(Splitter.on(CharMatcher.anyOf(“=[,”)).ommitEmptyStrings().trimResults().limit(7.split(str));
}

听起来正则表达式比简单拆分更适合这里,特别是如果字符串总是符合唯一的模式。但是,如果您可以更改它的存储方式,使用更固有的可序列化方式(例如XML或JSON)会让你的生活更轻松。谢谢你的回答!我已经用hashmaps方法解决了我的问题,但会编辑我的问题以进行解释。通常最好保持问题不变,只回答你自己的问题,而不是将你的解决方案放入问题中。我明白,但我解决问题的方式并不现实y match作为类似问题(处理字符串)的答案,因为这只是一个错误使用哈希映射引起的问题。我希望我说得清楚,谢谢你的回答。好吧,是和否。我实际上认为“不要使用字符串,而是传递集合本身”这是对你问题的一个很好的回答。你的第一句话(我第一次错过了)这两个状态都在同一个程序中。但我也看到了你的观点,即它没有直接解决字符串问题…听起来正则表达式比简单拆分更适合这里,特别是如果字符串总是符合唯一的模式。但是,如果你能改变它的存储方式,使用更固有的可序列化的东西(如XML或JSON)会让你的生活更轻松。谢谢你的回答!我已经用hashmaps方法解决了我的问题,但会编辑我的问题以进行解释。通常最好保持问题不变,只回答你自己的问题,而不是将你的解决方案放入问题中。我明白,但我解决问题的方式并不现实y match作为类似问题(处理字符串)的答案,因为这只是一个错误使用哈希映射引起的问题。我希望我说得清楚,谢谢你的回答。好吧,是和否。我实际上认为“不要使用字符串,而是传递集合本身”这是对你问题的一个很好的回答。你的第一句话(我第一次错过了这句话)说明这两个都在同一个程序中。但我也明白你的观点,它没有直接解决字符串问题…谢谢你的回答。我已经解决了我的问题w
public static List<String> convertToList2(String str) {
    str = str.substring(0, str.length()-1);
    return Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str));
}