来自字符串

时间:2016-04-13 10:38:19

标签: scala filter

我正在尝试从字符串中过滤子字符串。问题不仅仅是从“fdskufh”中删除子字符串“fd”。它从字符串中删除“fd”,但随后也删除了第二个f,因此新字符串为“skuh”。我们欢迎所有的建议?我一直在使用以下功能:

        def stripChars(s:String, ch:String)= s filterNot (ch contains _)

2 个答案:

答案 0 :(得分:1)

这个怎么样:

var React = require('react-native');
var {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    TextInput
} = React;

var CustomControl = React.createClass({
    propTypes: {
        onChangeTextValue: React.PropTypes.func,
        value: React.PropTypes.string.isRequired
    },

    getDefaultProps: function() {
        return {
            onChangeTextValue: () => { },
            value: ""
        }
    },

getInitialState: function() {
    return {
        text: this.props.value
    };
},

setText: function(value) {
    this.setState({
        text: value
    });
    try {
        return this.props.onChangeTextValue(value);
    } catch (_error) { }
},

render: function(){
    return (
        <TextInput
            style={{ height: 40, borderColor: 'gray',
                     borderWidth: 1 }}
            onChangeText={this.setText}
            value={this.state.text}
            />
        )
    }
});

var SampleApp = React.createClass({
    getInitialState() {
        return {
            'textValue': ''
        }
    },
    render: function() {
        return (
           <View style={styles.container}>
              <Text>
                  Parent Input
              </Text>
              <TextInput
        style={{height: 40, borderColor: 'gray', borderWidth: 1}}
        onChangeText={(text) => this.setState({textValue:text})}
        value={this.state.textValue}
              />
              <Text>
                  Custom control input
              </Text>

              <CustomControl
        onChangeTextValue={(text) => this.setState({textValue:text})}
                value={this.state.textValue}
              />

              <Text style={styles.instructions}>
                  Updating the parent input should update the custom control value too. Right now only when we update the custom control value, the parent input is updated.
              </Text>

          </View>
        );
    }
});

如果字符序列不存在,这具有返回原始字符串的优点。所以你可以拥有这个:

scala> def stripChars(s: String, ch: String) = s.split(ch).mkString
stripChars: (s: String, ch: String)String

scala> stripChars("fdskufh", "fd")
res194: String = skufh

它也适用于以下内容:

scala> stripChars("fdskufh", "ff")
res195: String = fdskufh

编辑:

或者你可以忽略所有这些,只需像谢尔盖建议的那样scala> stripChars("fdskufhfdsh", "fd") res196: String = skufhsh

答案 1 :(得分:-1)

查看您的代码行的含义:它将遍历s中的所有字符,并且会过滤掉{{1}中的所有字符}。所以你所观察到的确实是预期的。

您可以使用正则表达式:

ch