Java - 一次性拆分和修剪

时间:2017-01-31 09:01:29

标签: java string split

我有一个像这样的字符串:String attributes = " foo boo, faa baa, fii bii,"我想得到这样的结果:

String[] result = {"foo boo", "faa baa", "fii bii"};

所以我的问题是如何在一次拍摄中分割和修剪我已经拆分:

String[] result = attributes.split(",");

spaces仍在结果中:

String[] result = {" foo boo", " faa baa", " fii bii"};
                    ^           ^           ^

我知道我们可以制作一个循环并为每个人制作trim,但我想在镜头中制作它。

8 个答案:

答案 0 :(得分:52)

使用正则表达式\s*,\s*进行拆分。

String result[] = attributes.split("\\s*,\\s*");

初始和尾随空格
之前的解决方案仍然留下初始和尾随的空格。因此,如果我们期待其中任何一个,那么我们可以使用以下解决方案删除相同的内容:

String result[] = attributes.trim().split("\\s*,\\s*");

答案 1 :(得分:24)

使用java 8,你可以在一行中这样做

String[] result = Arrays.stream(attributes.split(",")).map(String::trim).toArray(String[]::new);

答案 2 :(得分:2)

如果逗号之间没有文本,则以下表达式不会创建空元素:

String result[] = attributes.trim().split("\\s*,+\\s*,*\\s*");

答案 3 :(得分:0)

用逗号和空格分割怎么样:

String result[] = attributes.split(",\\s");

答案 4 :(得分:0)

String result[] = attributes.trim().split("\\s*,[,\\s]*");

此前发布在此处:https://blog.oio.de/2012/08/23/split-comma-separated-strings-in-java/

答案 5 :(得分:0)

创建自己的自定义函数

ParticleSystem m_System;
ParticleSystem.Particle[] m_Particles;
int prevNumParticles = 0;

private void LateUpdate()
{
    InitializeIfNeeded();

    int numParticlesAlive = m_System.GetParticles(m_Particles);

    if (numParticlesAlive != prevNumParticles)
        ParticleControl(m_Particles[0]); //reference the newest particle (might be last in array)

    prevNumParticles = numParticlesAlive;
}

private void ParticleControl(particle)
{
     // do look at for the particle here
}

void InitializeIfNeeded()
{
    if (m_System == null)
        m_System = GetComponent<ParticleSystem>();

    if (m_Particles == null || m_Particles.Length < m_System.main.maxParticles)
        m_Particles = new ParticleSystem.Particle[m_System.main.maxParticles];
}

考虑自定义分隔符的重载

private static String[] split_and_trim_in_one_shot(String string){
 String[] result  = string.split(",");
 int array_length = result.length;

 for(int i =0; i < array_length ; i++){
  result[i]=result[i].trim();
 }
 return result;

答案 6 :(得分:0)

// given input
String attributes = " foo boo, faa baa, fii bii,";

// desired output
String[] result = {"foo boo", "faa baa", "fii bii"};

这应该有效:

String[] s = attributes.trim().split("[,]");

@Raman Sahasi回答:

在分割字符串之前,可以修剪尾随空格和前导空格。我使用了定界符,,因为它是您字符串中唯一的定界符

答案 7 :(得分:0)

最好的方法是:

value.split(",").map(function(x) {return x.trim()});